Я новичок в разработке Android и Java. В настоящее время у меня есть небольшое задание для информирования о батарее в виде виджета .
Я искал и нашел кусок исходного кода для извлечения информации из батареи (http://www.tutorialforandroid.com/2009/01/getting-battery-information-on-android.html). Я пытался адаптировать его к виджету, но у меня была проблема с BroadcastReceiver .
Я пытался передать значение уровня заряда батареи от BroadcastReceiver к RemoteViews. Я нашел метод getResultData () для объекта BroadcastReceiver, но всегда получаю для него значение Null.
Поэтому я хотел бы предложить передать это значение BroadcastReceiver в RemoteViews.
Чтобы прояснить ситуацию, я добавляю сюда часть своего кода.
public class MyBattery extends TimerTask {
RemoteViews remoteViews;
AppWidgetManager appWidgetmanager;
ComponentName thisWidget;
TextView contentTxt;
Context context;
public MyBattery(Context context, AppWidgetManager appWidgetManager){
this.appWidgetmanager = appWidgetManager;
remoteViews = new RemoteViews(context.getPackageName(),R.layout.main);
thisWidget = new ComponentName(context,widgetTest.class);
this.context = context;
}
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent){
int level = intent.getIntExtra("level", 0);
contentTxt.setText(String.valueOf(level)+"%");
this.setResultData(String.valueOf(level)+"%");
}
};
@Override
public void run() {
remoteViews.setTextViewText(R.id.battery_label,""+ this.mBatInfoReceiver.getResultData());
appWidgetmanager.updateAppWidget(thisWidget, remoteViews);
}
}