¿Hay alguna manera de obtener información de la batería del SDK de Android? Como la duración de la batería restante, etc. No puedo encontrarlo a través de los documentos.Batería Android en el SDK
Respuesta
Puede registrar un receptor de intención para recibir la transmisión de ACTION_BATTERY_CHANGED: http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED. Los documentos dicen que la transmisión es pegajosa, por lo que podrás tomarla incluso después del cambio de estado de la batería.
Aquí hay un ejemplo rápido que le indicará la cantidad de batería utilizada, el voltaje de la batería y su temperatura.
Pegue el código siguiente en una actividad:
@Override
public void onCreate() {
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
int scale = -1;
int level = -1;
int voltage = -1;
int temp = -1;
@Override
public void onReceive(Context context, Intent intent) {
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
}
};
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryReceiver, filter);
}
En mi teléfono, esto tiene la siguiente salida cada 10 segundos:
ERROR/BatteryManager(795): level is 40/100 temp is 320, voltage is 3848
Así que esto significa que la batería es de 40% lleno, tiene una temperatura de 32.0 grados centígrados, y tiene un voltaje de 3.848 voltios.
Este es un gran ejemplo, pero ¿por qué iniciar sesión en el nivel de "error"? – GetUsername
@GetUsername No hay ninguna razón particular para el registro de nivel de error que no sea la preferencia personal. Para iniciar sesión de este modo que elimino antes de publicar mi aplicación, me gusta iniciar sesión en el nivel de error para que sea fácil ver el registro en el mar de la salida de Logcat. – plowman
Necesitaba tener un monitor en la batería y verificar el nivel y el estado. Estoy desarrollando en MonoForAndroid, así que esto es lo que se me ocurrió. Lo estoy poniendo aquí en caso de que alguien tenga un requisito similar. (He probado esto y funciona bien).
try
{
var ifilter = new IntentFilter(Intent.ActionBatteryChanged);
Intent batteryStatusIntent = Application.Context.RegisterReceiver(null, ifilter);
var batteryChangedArgs = new AndroidBatteryStateEventArgs(batteryStatusIntent);
_Battery.Level = batteryChangedArgs.Level;
_Battery.Status = batteryChangedArgs.BatteryStatus;
}
catch (Exception exception)
{
ExceptionHandler.HandleException(exception, "BatteryState.Update");
throw new BatteryUpdateException();
}
namespace Leopard.Mobile.Hal.Battery
{
public class AndroidBatteryStateEventArgs : EventArgs
{
public AndroidBatteryStateEventArgs(Intent intent)
{
Level = intent.GetIntExtra(BatteryManager.ExtraLevel, 0);
Scale = intent.GetIntExtra(BatteryManager.ExtraScale, -1);
var status = intent.GetIntExtra(BatteryManager.ExtraStatus, -1);
BatteryStatus = GetBatteryStatus(status);
}
public int Level { get; set; }
public int Scale { get; set; }
public BatteryStatus BatteryStatus { get; set; }
private BatteryStatus GetBatteryStatus(int status)
{
var result = BatteryStatus.Unknown;
if (Enum.IsDefined(typeof(BatteryStatus), status))
{
result = (BatteryStatus)status;
}
return result;
}
}
}
#region Internals
public class AndroidBattery
{
public AndroidBattery(int level, BatteryStatus status)
{
Level = level;
Status = status;
}
public int Level { get; set; }
public BatteryStatus Status { get; set; }
}
public class BatteryUpdateException : Exception
{
}
#endregion
public static String batteryLevel(Context context)
{
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
int percent = (level*100)/scale;
return String.valueOf(percent) + "%";
}
- 1. obtener nivel de batería en el widget de Android
- 2. Android Perfil de uso de la batería
- 3. Crear "intención de uso de batería" android
- 4. Nivel de batería en Phonegap
- 5. ¿Los receptores de difusión Android consumen batería?
- 6. Configuración JAVA_HOME en Android SDK
- 7. Obtener nivel de batería y estado en Android
- 8. cómo llegar temperatura de la batería en Android
- 9. Simulación de batería baja y poca memoria en Android
- 10. Obtener la temperatura de la batería en android
- 11. dual sim android sdk
- 12. Cómo obtener información sobre el uso de la batería de Android mediante la aplicación
- 13. No se puede encontrar android sdk 2.3.4 en SDK manager
- 14. Error Android SDK
- 15. cómo medir y mejorar el uso de la batería en el iPhone/iPad (también en Android)
- 16. Android IntelliJ SDK versión
- 17. descargar los componentes de Android SDK sin el administrador de Android SDK
- 18. Deshabilitar la ventana emergente de "batería baja" de Android
- 19. Informe de uso de la batería de Android para desarrolladores
- 20. Detectar cambiar el estado de la batería en cada porcentaje en android
- 21. Android SDK Problemas Ubuntu 10.04lts
- 22. documentación de Dropbox android sdk
- 23. ¿Qué plataforma Android SDK necesito?
- 24. Streaming con Android MediaPlayer en SDK 8
- 25. Última Apache HttpClient en Android SDK
- 26. overridePendingTransition en Android SDK no funciona
- 27. Rect y RectF en Android SDK
- 28. Obtener los valores actuales de la batería para el teléfono Android
- 29. Android SDK Manager, ¿qué instalar?
- 30. Convenciones de nomenclatura en el SDK de Android
Se puede publicar un código de ejemplo para esto. No estoy seguro de cómo recibir un intento de transmisión. –