私はAndroidの新しいBです。私は次のコードでバッテリーのステータス/レベルを取得することができました:
private void BattStatus() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
batteryLevel = level;
BattStatus.setText("Battery Level : " + batteryLevel + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
バッテリーレベルをテキストファイルに保存したい(スレッドを使用)。コード:
public final Runnable DBThread = new Runnable() {
String AllInfo = batteryLevel+"%"+" , "+new SimpleDateFormat("HH:mm , dd.MM.yy ").format(new Date());
public void run() {
try {
Log.d("DBThread","Battery :"+batteryLevel);
Log.d("DBThread","Updating DB");
myDbHelper.CreateAndWriteFile(sdDir+"/", AllInfo );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mHandler.postAtTime(this, SystemClock.uptimeMillis() + 2000);
Log.d("DBThread","Updated DB");
Log.d("DBThread",AllInfo);
}
残念ながら、バッテリーステータス/レベルはテキストファイルで0%を返します。スレッドでログ機能を使用してテストすると、正しい値が返されます。
誰かが私が間違っていることやしていないことを教えてくれて、開発に慣れていないのでコードスニペットを提供してくれませんか?そして私の投稿が正しくない場合は申し訳ありませんスタックオーバーフローの最初のタイマー: )。
どうもありがとうございます!