2015-01-15 5 views
-1

На самом деле, я пытаюсь сделать приложение для Android, чтобы отобразить текст, когда батарея станет 50%, т с помощью текстового вида, чтобы отобразить сообщение, но при загрузке приложения он, к сожалению, останавливается.Как показать состояние батареи в текстовом режиме?

вот мой код:

Java файл.

package com.example.abhi.batteryalarm; 

import android.content.Intent; 
import android.os.BatteryManager; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 


public class Battery_Alarm extends ActionBarActivity { 
    Intent batteryStatus; 
    TextView txtView; 
    String hello; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_battery__alarm); 
     txtView=(TextView)findViewById(R.id.txtView); 
     hello="This is my first project"; 

     int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
     if (level==50) 
     { 
      txtView.setText(hello); 
     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_battery__alarm, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

}

активность файла:

<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" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Battery_Alarm"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="hello" 
     android:textSize="62sp" 
     android:id="@+id/txtView" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="125dp" /> 

</RelativeLayout> 

Какие вещи я должен сделать?

+0

Используя широковещательный приемник, вы получаете текущий статус. –

+0

Исключение. Вставьте журналы – Psypher

+0

, где вы получили этот код? post logcat всегда, когда у вас ошибка, i thuink 'batteryStatus' не назначается, поэтому он имеет значение null, это проблема, – Yazan

ответ

0

Это линия, которая вызывает ошибку:

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 

Это потому, что намерение BatteryStatus никогда не инициализируется и, следовательно, нуль.

Проверить этот ответ о выборке уровень заряда батареи: https://stackoverflow.com/a/4047790/1239966

1

Добавить это,

batteryStatus = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 

перед тем,

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 

и он будет работать.

+0

теперь вместо отображения текста. Я хочу воспроизвести звук, как я продолжу? Я получил этот код: MediaPlayer mediaPlayer = MediaPlayer.create (context, R.raw.sound_file_1); mediaPlayer.start(); но не мог понять! пожалуйста, помогите –

+0

, так что вы говорите, что музыка не играет ??? потому что код выглядит хорошо для меня. –

0

Вам необходимо зарегистрировать батареюStatus.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
Intent batteryStatus = context.registerReceiver(null, ifilter); 
+0

спасибо !!!! его работа сейчас! ,,, теперь предположим, что я хочу запустить это приложение в фоновом режиме, так что когда батарея станет на 50%, приложение откроется и отобразит текст !!! возможно ли это сделать / –