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);
}
请帮帮忙!谢谢!
感谢您的答复,我解决了自己的问题。我只是从ServiceforVolumeChecker类中删除了停止服务,并开始按需要工作。 – Dave