¿Cómo calcular el tiempo restante de la batería del teléfono Android?
Estoy desarrollando la aplicación de la batería de la salud en Android Studio. Quiero saber cómo calcular el tiempo restante al reproducir música o video, navegar por el sitio web o en modo de espera. He visto muchas aplicaciones de Android como esta, pero no puedo ver el código fuente. Quiero ver el código de ejemplo para calcular el tiempo restante para reproducir música o video y así sucesivamente. Si usted ha desarrollado la aplicación sana de la batería del androide antes, comparta por favor su conocimiento.
- ¿Cómo replicar el botón de acción flotante Inbox (con texto para cada botón secundario)?
- Cambiar el color del icono de desbordamiento de la barra de herramientas
- Lectura y escritura de archivos binarios en Java (viendo la mitad del archivo dañado)
- Android Realm copyToRealmOrUpdate crea duplicados de objetos anidados
- La aplicación de Android no aparece en el emulador
- Cifrar con Node.js módulo Crypto y descifrar con Java (en la aplicación de Android)
- ¿Cómo puedo configurar un administrador de alarmas para disparar cada día específico de la semana y el tiempo en android?
- ¿Es java.util.Scanner lento?
- Segunda AsyncTask no se ejecuta
- GSON / Jackson en Android
- El tipo android.content.Context no se puede resolver. Se hace referencia indirectamente a los archivos .class requeridos
- Android: javac vs Dalvik
- "R no se puede resolver a una variable" justo después de crear el proyecto android?
– La forma más sencilla y más fácil de calcular la duración de la batería restante:
MainActivity.java:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView batteryPercent; private void getBatteryPercentage() { BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { context.unregisterReceiver(this); int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); int level = -1; if (currentLevel >= 0 && scale > 0) { level = (currentLevel * 100) / scale; } batteryPercent.setText("Battery Level Remaining: " + level + "%"); } }; IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryLevelReceiver, batteryLevelFilter); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); batteryPercent = (TextView) this.findViewById(R.id.batteryLevel); getBatteryPercentage(); } }
Archivo xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:id="@+id/batteryLevel" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal" android:textSize="20dip"> </TextView> </RelativeLayout>
No se puede adivinar con exactitud cuánto tiempo queda para la descarga de la batería, ya que podría haber diferentes aplicaciones o consumir batería.
Sin embargo, puede obtener la vida de la batería con la ayuda del receptor de radiodifusión registrando un receptor para la acción Intent.ACTION_BATTERY_CHANGED.
Mediante el uso de la siguiente instrucción en el método onReceive () de BroadcastReceiver con la acción de intención anterior, obtendrá el nivel de batería disponible actualmente. Pero no se puede estimar el tiempo restante, porque algunas aplicaciones pueden consumir más energía.
battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
El siguiente código le ayudará a calcular el nivel de batería
public int getBatteryLevel(Context context) { IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); return level; }
- @Namespace en Android SimpleXml
- ¿Hay un límite en cuántas actualizaciones de apk único para publicar o subir en Android Market (Google Play Store)?