小编Waf*_*ae 的帖子

当手机被锁定时,听音量按钮

我的应用程序中有一个服务在后端运行,当我按下按钮音量时服务可以启动,当按下按钮音量时停止服务.

public class SettingsContentObserver extends ContentObserver {


int previousVolume;
Context context;

public SettingsContentObserver(Context c, Handler handler) {
    super(handler);
    context=c;

    AudioManager audio = (AudioManager)        context.getSystemService(Context.AUDIO_SERVICE);
    previousVolume = audio.getStreamVolume(AudioManager.STREAM_RING);

}



@Override
public boolean deliverSelfNotifications() {
    return super.deliverSelfNotifications();
}

@Override
public void onChange(boolean selfChange) {
    super.onChange(selfChange);

    AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);

    int delta=previousVolume-currentVolume;



        if(delta > 0)
        {
            System.out.println("Decreased") ;
            Intent intent = new Intent(context, MyAlarmService.class);
            context.stopService(intent);
            previousVolume=currentVolume;
        }
        else if(delta < 0)
        {
              System.out.println("Increased");
              Intent intent = new Intent(context, …
Run Code Online (Sandbox Code Playgroud)

service android volume locked broadcastreceiver

5
推荐指数
2
解决办法
1729
查看次数

onReceive 被调用多次

我有一项从其他应用程序获取数据的服务。

当我得到日期时,我发送消息broadCast以刷新用户界面。

onReceive方法被多次调用,数据被多次显示。

这是我的代码:

数据服务.java

if(sizeLat == 1) {
                                       
   sendMessage("Alerte1;");
                                    
}
else {

   sendMessage("Alerte2;");
}


 private void sendMessage(String message) {
    Log.w("","==> send message");
    Intent intent = new Intent("my-event");
    // add data
    intent.putExtra("message", message);
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
 }
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

// handler for received Intents for the "my-event" event 
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          
                      
      Log.e("","Onreceiver");
      String message = intent.getStringExtra("message");
    
        
        if(message.equals("Alerte1")){
      parentItems.add(message);
      adapter.notifyDataSetChanged();
         }}};

@Override
  protected void onResume() {
    Log.d(TAG, "On …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver receiver

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×2

broadcastreceiver ×2

locked ×1

receiver ×1

service ×1

volume ×1