Astronaut loading animation Circular loading bar

Try : Insurtech, Application Development

AgriTech(1)

Augmented Reality(20)

Clean Tech(5)

Customer Journey(12)

Design(35)

Solar Industry(6)

User Experience(55)

Edtech(10)

Events(34)

HR Tech(2)

Interviews(10)

Life@mantra(11)

Logistics(5)

Strategy(17)

Testing(9)

Android(47)

Backend(30)

Dev Ops(7)

Enterprise Solution(27)

Technology Modernization(2)

Frontend(28)

iOS(43)

Javascript(15)

AI in Insurance(35)

Insurtech(63)

Product Innovation(49)

Solutions(19)

E-health(10)

HealthTech(22)

mHealth(5)

Telehealth Care(4)

Telemedicine(5)

Artificial Intelligence(132)

Bitcoin(8)

Blockchain(19)

Cognitive Computing(7)

Computer Vision(8)

Data Science(17)

FinTech(50)

Banking(7)

Intelligent Automation(26)

Machine Learning(47)

Natural Language Processing(14)

expand Menu Filters

Optimizing Android Apps on Variable Network Speeds

Most of the apps today are developed and designed which can perform on all types of networks. While some of us are probably enjoying great connectivity courtesy of our carriers at our school/office/coffees shop wi-fi, there are still some people suffering from poor mobile connections, particularly in emerging markets. If you are developing an Android app you may already fetching information from internet. While doing so there is a chance that internet connection is not available on users handset, connection is slow or fast. Hence its always a good idea to create an app that can perform accordingly on all types of networks.

Facebook has made it known that their goal is to be able to reach and give access to as many markets as possible, and this includes those that still use 2G connections. In this post, we will share how this is possible by Network Connection Class

Network Connection Class allows you to check the quality of the internet connection of the current user, it is an android library. It is a simple code that will help you identify what kind of internet connection a user has on his/her device. Network Connection Class currently only measures the user’s downstream bandwidth. Latency is also an important factor, but in our tests, we’ve found that bandwidth is a good proxy for both.

The connection gets classified into several Connection Classes that makes it easy to develop against. The library does this by listening to the existing internet traffic done by your app and notifying you when the user’s connection quality changes. Developers can then use this Connection Class information and adjust the application’s behavior (request lower quality images or video, throttle type-ahead, etc).

The Network Connection Class library takes care of spikes using a moving average of the incoming samples, and also applies some hysteresis (both with a minimum number of samples and amount the average has to cross a boundary before triggering a bucket change):

Code Sample:
Connection Class provides an interface for classes to add themselves as listeners for when the network’s connection quality changes. In the subscriber class, implement ConnectionClassStateChangeListener:

[section_tc][column_tc span=’12’][blockquote_tc style=’style4′ class=”blog-code”]package com.example.android.connectionclasstest;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.facebook.network.connectionclass.ConnectionClassManager;
import com.facebook.network.connectionclass.ConnectionQuality;
import com.facebook.network.connectionclass.DeviceBandwidthSampler;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends AppCompatActivity {

private static final String TAG = “ConnectionClass-Sample”;
private ConnectionClassManager mConnectionClassManager;
private DeviceBandwidthSampler mDeviceBandwidthSampler;
private TextView mTextView;
private ImageView mImageView;
private ImageLoader imageLoader;
private ProgressBar mRunningBar;
private ConnectionChangedListener mListener;
private int mTries = 0;
private ConnectionQuality mConnectionClass = ConnectionQuality.UNKNOWN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext()));
mConnectionClassManager = ConnectionClassManager.getInstance();
mDeviceBandwidthSampler = DeviceBandwidthSampler.getInstance();
mRunningBar = (ProgressBar) findViewById(R.id.runnigBar);
mTextView = (TextView) findViewById(R.id.connectionClass);
mImageView = (ImageView) findViewById(R.id.imageView);
findViewById(R.id.testButton).setOnClickListener(DownloadImage);
mTextView.setText(mConnectionClassManager.getCurrentBandwidthQuality().toString());
mListener = new ConnectionChangedListener();
findViewById(R.id.upload).setOnClickListener(UploadImage);
findViewById(R.id.vdButton).setOnClickListener(PlayVideo);
}

@Override
protected void onPause() {
super.onPause();
mConnectionClassManager.remove(mListener);
}

@Override
protected void onResume() {
super.onResume();

mConnectionClassManager.register(mListener);
}
String connectionQuality=null;

private class ConnectionChangedListener
implements ConnectionClassManager.ConnectionClassStateChangeListener {

@Override
public void onBandwidthStateChange(ConnectionQuality bandwidthState) {
mConnectionClass = bandwidthState;
runOnUiThread(new Runnable() {
@Override
public void run() {

connectionQuality = mConnectionClass.toString();
switch (connectionQuality){
case “POOR”:
double val1 = mConnectionClassManager.getDownloadKBitsPerSecond();
mTextView.setText(“Quality is “+connectionQuality+” “+val1 +” and Bandwidth under 150 kbps so poor quality Image downloaded”);
android.support.design.widget.Snackbar.make(findViewById(R.id.main),”Quality is “+connectionQuality+ val1 +”\n and Bandwidth under 150 kbps so poor\n quality image is downloading”, android.support.design.widget.Snackbar.LENGTH_LONG).show();
new DnloadImage().execute(“http://storage.googleapis.com/ix_choosemuse/uploads/2016/02/android-logo.png”); // 80 kb
break;

case “MODERATE”:
double val2 = mConnectionClassManager.getDownloadKBitsPerSecond();
mTextView.setText(“Quality is “+connectionQuality+” “+val2 +” and Bandwidth between 150 to 550 kbps so moderate quality Image downloaded”);
android.support.design.widget.Snackbar.make(findViewById(R.id.main),”Quality is “+connectionQuality+ val2 +”\n and Bandwidth between 150 to 550 kbps so moderate\n quality Image is downloading”, android.support.design.widget.Snackbar.LENGTH_LONG).show();
new DnloadImage().execute(“http://static.giantbomb.com/uploads/original/15/157771/2312725-a10.jpeg”); // 454 kb
break;

case “GOOD”:
double val3 = mConnectionClassManager.getDownloadKBitsPerSecond();
android.support.design.widget.Snackbar.make(findViewById(R.id.main),”Quality is “+connectionQuality+ val3 +”\n and Bandwidth between 550 to 2000 kbps so good\n quality Image is downloading”, android.support.design.widget.Snackbar.LENGTH_LONG).show();
mTextView.setText(“Quality is “+connectionQuality+” “+val3 +” and Bandwidth between 550 to 2000 kbps so good quality Image downloaded”);
new DnloadImage().execute(“http://techclones.com/wp-content/uploads/2013/09/Best-Dark-HD-Wallpaper-Android1.png”); // 1.04 mb
break;

case “EXCELLENT”:
double val4 = mConnectionClassManager.getDownloadKBitsPerSecond();
mTextView.setText(“Quality is “+connectionQuality+” “+val4 +” and Bandwidth over 2000 kbps so excellent quality Image downloaded”);
android.support.design.widget.Snackbar.make(findViewById(R.id.main),”Quality is “+connectionQuality+ val4 +”\n and Bandwidth over 2000 kbps so high\n quality Image is downlaoding”, android.support.design.widget.Snackbar.LENGTH_LONG).show();
new DnloadImage().execute(“http://static.giantbomb.com/uploads/original/15/157771/2312721-a7.png”); // 2.49 mb
break;

case “UNKNOWN”:
mTextView.setText(“Sorry we are getting nothing”);
break;
}
}
});
}
}

private final View.OnClickListener DownloadImage = new View.OnClickListener() {
@Override
public void onClick(View v) {
mRunningBar.setVisibility(View.VISIBLE);
mTries=0;
String quality = mConnectionClass.toString();
Toast.makeText(MainActivity.this, “Quality ->”+quality, Toast.LENGTH_SHORT).show();
new DnloadImage().execute(“”);
}
};

private final View.OnClickListener UploadImage = new View.OnClickListener() {
@Override
public void onClick(View v) {
//showFileChooser();
Intent intent = new Intent(MainActivity.this, UplaodActivity.class);
startActivity(intent);
}
};

private final View.OnClickListener PlayVideo = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, VideoActivity.class);
startActivity(intent);
}
};

private class DnloadImage extends AsyncTask<String, Void, Bitmap> {

@Override
protected void onPreExecute() {
mDeviceBandwidthSampler.startSampling();
mRunningBar.setVisibility(View.VISIBLE);
}

@Override
protected Bitmap doInBackground(String… url) {
String imageURL = url[0];
try {
ByteArrayInputStream byteArrayInputStream;
// Bitmap bitmap;
URLConnection connection = new URL(imageURL).openConnection();
connection.setUseCaches(false);
connection.connect();
InputStream input = connection.getInputStream();

try {
Bitmap bitmap = BitmapFactory.decodeStream(input);
return bitmap;
} finally {
input.close();
}
} catch (IOException e) {
Log.e(TAG, “Error while downloading image.”);
}
return null;
}

@Override
protected void onPostExecute(Bitmap bp) {
mDeviceBandwidthSampler.stopSampling();
Toast.makeText(MainActivity.this,””+mTries,Toast.LENGTH_SHORT).show();

if (mConnectionClass == ConnectionQuality.UNKNOWN && mTries < 10) {
mTries++;
new DnloadImage().execute(“https://familysearch.org/learn/wiki/en/images/9/9d/Links-Folder-icon.png”);
}
if (!mDeviceBandwidthSampler.isSampling()) {
mImageView.setImageBitmap(bp);
//imageLoader.getInstance().displayImage(mURL,mImageView);
mRunningBar.setVisibility(View.GONE);

}
}
}
}[/blockquote_tc][/column_tc][/section_tc]

The main way to provide the ConnectionClassManager data is to use the DeviceBandwidthSampler. The DeviceBandwidthSampler samples the device’s underlying network stats, when you tell it you’re performing some sort of network activity (downloading photos, playing a video, etc).

To know more about the Network Connection Class and its implementation, feel free to say hello@mantralabsglobal.com. We would surely respond to your queries.

 

Cancel

Knowledge thats worth delivered in your inbox

Embracing the Digital Frontier: Transforming the Patient Journey in Pharma

In the realm of pharmaceuticals, the digital revolution is not just a buzzword; it’s a seismic shift reshaping the landscape of patient care. From discovery to delivery, digital technologies are revolutionizing every facet of the pharmaceutical industry. One of the most profound impacts is evident in the patient journey. Today’s Patients are more informed, engaged, and empowered than ever, thanks to the proliferation of digital tools and platforms. In this comprehensive exploration, we will delve into the multifaceted ways digital is redefining the patient journey in pharmaceuticals.

According to a report by Accenture on the rise of digital health, these are the key challenges to overcome:

  • 99% of respondents indicated that the development and commercialization of Digital Health solutions has accelerated in the past two years. As part of this, companies require various new and strengthened capabilities to execute their visions. 
  • Patients and health professionals need to trust that the data collected is accurate, safe, and secure for them to feel comfortable using it. 
  • Fragmented data or lack of access to data has been a barrier to development. An overarching guideline on data privacy is needed.

Leveraging Digital Solutions for Accessible Drug Delivery

In the pharmaceutical industry, the journey of medication from production facilities to patients’ hands is evolving with the integration of digital solutions. These technologies not only streamline logistics but also ensure that medications reach even the most remote and underserved areas. Let’s delve into how digital innovations are transforming drug delivery and backend channels in the pharmaceutical industry.

Digital Backend Channels and Supply Chain Management:

Pharmaceutical firms leverage digital tech for efficient backend operations. Software like SAP Integrated Business Planning and Oracle SCM Cloud enable real-time tracking, inventory management, and demand forecasting. With AI and analytics, companies adapt to market changes swiftly, ensuring timely medication delivery and optimized supply chain logistics.

Innovative Digital Drug Delivery Technologies:

  1. Controlled Monitoring Systems: Digital temperature monitoring systems provide digital temperature monitoring solutions using IoT sensors and cloud platforms, safeguarding temperature-sensitive medications during transit, ensuring compliance with regulatory standards, and minimizing product spoilage risk.
  1. Last-Mile Delivery Platforms: Zipline and Nimblr.ai, along with LogiNext, employ digital last-mile delivery solutions, using drones and AI-powered logistics to transport vital medical supplies efficiently to remote regions, improving accessibility for underserved communities.
  1. Telemedicine Integration with Prescription: Integrated telemedicine and prescription platforms, like Connect2Clinic, are rapidly growing in response to COVID-19. With telehealth claims at 38 times pre-pandemic levels, the industry is projected to hit $82 billion by 2028, with a 16.5% annual growth rate. Mantra Labs partnered with Connect2Clinic, enabling seamless coordination between healthcare providers, pharmacies, and patients. This facilitates virtual consultations and electronic prescribing, benefiting remote patients with medical advice and prescriptions without in-person visits. These platforms enhance healthcare access, medication adherence, and patient engagement through personalized care plans and reminders.
  1. Community Health Worker Apps: CommCare and mHealth empower community health workers with digital tools for medication distribution, education, and patient monitoring. Customizable modules enable tracking inventories, health assessments, and targeted interventions, extending pharmaceutical reach to remote communities, and ensuring essential medications reach those in need.

Through the strategic deployment of digital solutions in drug delivery and backend channels, pharmaceutical companies are overcoming barriers to access and revolutionizing healthcare delivery worldwide. By embracing innovation and collaboration, they are not only improving patient outcomes but also advancing toward a more equitable and inclusive healthcare system.

Personalized Medicine:

Wearable devices and mobile apps enable personalized medicine by collecting real-time health data and tailoring treatment plans to individual needs. For example, fitness trackers monitor activity and vital signs, customizing exercise and medication. Personalized medicine optimizes efficacy, minimizes adverse effects, and enhances patient satisfaction by leveraging patient-specific data.

Enhanced Patient Engagement:

Pharmaceutical firms utilize digital platforms for patient engagement, fostering support and education during treatment. Through social media, mobile apps, and online communities, patients connect, access resources, and receive professional support. Two-way communication enhances collaboration and decision-making, boosting treatment adherence, health outcomes, and consumer loyalty. Click here to know more.

Data-Driven Insights:

The abundance of healthcare data offers pharma companies unique opportunities to understand patient behavior and treatment patterns. By leveraging big data analytics and artificial intelligence, they extract actionable insights from various sources like electronic health records and clinical trials. These insights inform targeted marketing, product development, and patient support programs. However, ensuring data privacy and security is crucial, requiring robust regulatory frameworks and transparent practices in the digital era.

Challenges and Considerations:

Maximizing the benefits of digital technologies requires addressing challenges like patient data privacy and equitable access to healthcare tech. Stringent safeguards are needed to protect confidentiality and trust, alongside efforts to bridge the digital divide. Regulatory frameworks must evolve to balance innovation with patient safety and security amidst rapid advancements in digital health.

Key Considerations for Pharma Companies in Embracing Digital Innovation:

  • Prioritize patient-centricity in digital initiatives, focusing on improving patient outcomes and experiences.
  • Invest in robust data privacy and security measures to build and maintain patient trust.
  • Foster collaboration and partnerships with technology companies and healthcare providers to drive innovation and scalability.
  • Leverage analytics and AI to derive actionable insights from healthcare data and inform decision-making processes.
  • Continuously monitor and adapt to regulatory requirements and industry standards to ensure compliance and mitigate risks.

Conclusion:

The digital revolution is not just a paradigm shift but a catalyst for transformation across the pharmaceutical industry. By embracing digital technologies, pharma companies can unlock new opportunities to enhance the patient journey, improve treatment outcomes, and drive sustainable growth. However, realizing the full potential of digital health requires collaboration, innovation, and a steadfast commitment to addressing the challenges and considerations inherent in this transformative journey. As we navigate the digital frontier, the future of patient care promises to be more connected, personalized, and empowering than ever before.

Cancel

Knowledge thats worth delivered in your inbox

Loading More Posts ...
Go Top
ml floating chatbot