2014-10-26 39 views
1

您好朋友我正在开发Battery android应用程序。在关闭应用程序后在状态栏上显示电池电量(%)。我开始一个服务类,作为后台进程运行并添加一些代码。 Notificationservice.java通过服务级别更新电池级别作为后台进程

public void onCreate(){ 
     super.onCreate(); 
     IntentFilter filter= new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     Intent batteryStatus= getApplicationContext().registerReceiver(null, filter); 
     int status= batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
     batteryLevel= String.valueOf(status); 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    //make the toast message 
    Toast.makeText(this, "Service Started"+batteryLevel+"%", Toast.LENGTH_LONG).show(); 

    //show the notification on status bar 
    NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Intent intent2= new Intent(this, MainActivity.class); 
    PendingIntent pendingIntent= PendingIntent.getActivity(getApplicationContext(), 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT); 
    NotificationCompat.Builder mbuilder= new 
      NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.ic_launcher) 
    .setContentTitle("Battery Level: "+batteryLevel+"%") 
    .setContentText("Battery Level: "+batteryLevel+"%") 
    .setContentIntent(pendingIntent); 

    nm.notify(notificationID, mbuilder.build()); 
    return START_STICKY; 
    } 

    @Override 
    public void onDestroy(){ 
     super.onDestroy(); 
     Toast.makeText(getApplicationContext(), "service Destroy", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 

在MainActivity.java

rotected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    b1= (Button) findViewById(R.id.button1); 
    b2= (Button) findViewById(R.id.button2); 
    tv= (TextView) findViewById(R.id.textView1); 
    createListener(); 
} 


private void createListener() { 
    b1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startService(new Intent(getBaseContext(), Notificationservice.class)); 
     } 
    }); 

    b2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      stopService(new Intent(getBaseContext(), Notificationservice.class)); 

     } 
    }); 

} 

当我按运行的应用程序正常运行,但是当我按下启动服务按钮电池电量显示在状态栏,但它不会改变/更新它保持不变。朋友请帮忙,我该怎么办....?

回答

0

你需要开始从广播服务或通知receiver..just注册广播摆脱的receiver..call通知的onReceive()方法电池level..and或启动服务..

+0

试试这个一次.. – Meenal 2014-10-26 14:13:28

+0

我获得电池电量并启动一项服务,显示电池电量的通知。但它没有得到更新(就像我开始服务在25℅它显示通知您的电池电量是25℅它不会更新/更改) – 2014-10-27 12:17:15

+0

您必须更新通知continuusloy – Meenal 2014-10-27 12:25:06