某些 Android 应用程序会在设备的音量发生变化时生成通知,而某些应用程序会锁定音量。对于我的生活,我不知道这是怎么做到的。拜托,有人可以通过提供示例来帮助我吗?
最佳答案
实际上,您可以通过使用 Content Observer 来实现一种服务方式。它像广播接收器一样工作,监听音量、联系人、通话记录等内容变化的事件......
在您的服务中使用以下代码
public class VolumeService extends Service{
AudioManager mAudioManager;
Handler mHandler;
private ContentObserver mVolumeObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
if (mAudioManager != null) {
final int volume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
System.out.println("Volume thay đổi: " +volume);
Intent photoIntent = new Intent(VolumeService.this,TakePhotoActivity.class);
photoIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(photoIntent);
}
}
};
@Override
public void onCreate() {
super.onCreate();
System.out.println("Volume Service started");
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
Uri uri = Settings.System.getUriFor(Settings.System.VOLUME_SETTINGS[AudioManager.STREAM_RING]);
getContentResolver().registerContentObserver(uri, true, mVolumeObserver);
System.out.println("Đã đăng ký Volume listener");
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("Volume service destroied");
getContentResolver().unregisterContentObserver(mVolumeObserver);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
不要忘记在 Android Manifest.xml 中声明它
<service android:name=".service.VolumeService" >
关于android - 有什么方法可以通过 android 服务检测音量键按下或音量变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297242/