2016-03-10 5 views
4

Я разрабатываю приложение для здоровья аккумулятора на Android Studio. Я хочу знать, как рассчитать оставшееся время, играя музыку или видео, просматривая веб-сайт или в режиме ожидания. Я видел много приложений для Android, подобных этому, но не вижу исходного кода. Я хочу увидеть пример кода для вычисления оставшегося времени для воспроизведения музыки или видео и так далее. Если раньше у вас было здоровое приложение для Android, сообщите, пожалуйста, свои знания.Как рассчитать оставшееся время батареи телефона Android?

ответ

2

Вы не можете точно догадаться, сколько времени осталось для разряда батареи, поскольку могут быть разные приложения или потребляемая пользователем батарея.

Однако вы можете получить время автономной работы с помощью широковещательного приемника, зарегистрировав приемник для действия Intent.ACTION_BATTERY_CHANGED.

Используя приведенный ниже оператор в методе onReceive() BroadcastReceiver с приведенным выше действием Intent, вы получите доступный уровень заряда батареи. Но вы не можете оценить оставшееся время, потому что некоторые приложения могут потреблять больше энергии.

battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
3

- Простейшие и наиболее простой способ рассчитать оставшийся срок службы батареи:

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(); 
    } 
} 

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> 
+0

Мне нравится ваше решение. проголосуйте от меня –

0

Следующий код поможет вы должны рассчитать уровень заряда аккумулятора

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; 
}