2013-07-05 26 views
1

我正在开发一个Android应用程序,在那里我注册我的ContentObserver类来检测 VOLUME_RING中的更改。Onchange的内容观察员没有被启动时调用

我的问题是,我在电话启动时调用ContentObserver类,并且我能够进入Contentobserver类,但onchange方法没有被调用(即,音量变化未被检测到)。

请看看下面的代码,

//BootupReceiver code. 

      public class Bootupreceiver extends BroadcastReceiver 
       { 
       @Override 
       public void onReceive(Context context, Intent intent) 
        { 
        Intent startServiceIntent = new Intent(context,ServiceforVolumeChecker.class); 
        startServiceIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startService(startServiceIntent); 
        } 
       } 


//code to register the Content observer class. 

public class ServiceforVolumeChecker extends Service 
{ 

private VolumeChecker Volume; 

@Override 
public void onCreate() 
{ 
    super.onCreate(); 

    Log.e("Service","Service"); 

    Volume = new VolumeChecker(this,new Handler()); 

    String vol_ring = android.provider.Settings.System.VOLUME_RING; 

    int currentapiVersion = android.os.Build.VERSION.SDK_INT; 


    if (currentapiVersion >= 17) 
    { 
     getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, Volume); 
    } 
    else 
    { 
     getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.getUriFor(vol_ring), true, Volume); 
    } 

    stopService(new Intent(this, ServiceforVolumeChecker.class)); 
} 

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


    //code of ContentObserver class. 


    public class VolumeChecker extends ContentObserver 
     { 

      public VolumeChecker(Context c, Handler handler) 
     { 
      super(handler); 
      context=c; 
      this.handler = handler; 

     } 

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

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

请帮帮忙!谢谢!

回答

0

把服务任务onStartCommand而是采用的onCreate

+1

感谢您的答复,我解决了自己的问题。我只是从ServiceforVolumeChecker类中删除了停止服务,并开始按需要工作。 – Dave