没有广播操作可以检测音量变化,但您可能每两秒或两次检查音量是多少getStreamVolume,如果您需要将其锁定在特定音量,每隔一两秒使用:setStreamVolume
有关详细信息,请查看http://developer.android.com/reference/android/media/AudioManager.htm.
您可以使用AlarmManager类或处理程序每秒检查一次音量.
如果它是一个活动,您可以覆盖onKeyDown以检测按键.请参阅http://developer.android.com/reference/android/view/View.html
实际上,通过使用内容观察器,您可以通过一种方式进行服务.它就像一个广播接收器,听取音量,联系人,通话记录等内容变化的事件......
在您的服务中使用以下代码
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;
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记在Android Manifest.xml中声明它
<service android:name=".service.VolumeService" >
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7484 次 |
| 最近记录: |