일부 Android 앱은 기기의 볼륨이 변경되고 볼륨이 잠길 때 알림을 생성합니다. 내 삶을 위해, 어떻게 완료되었는지 알 수 없습니다. 제발, 누군가가 제게 도움을 줄 수 있습니까?안드로이드 서비스를 통한 볼륨 키 누름 또는 볼륨 변경을 감지하는 방법은 무엇입니까?
4
A
답변
5
이 볼륨의 변화를 감지 할 방송 활동은 없지만, 그럴 수 어쩌면 모든 초 볼륨이 getStreamVolume
으로하고 특정 볼륨을 고정해야하는 경우, 매 2 초 사용 어떤 두 검사 : setStreamVolume
자세한 내용은 http://developer.android.com/reference/android/media/AudioManager.htm을 확인하십시오.
AlarmManager 클래스 또는 처리기를 사용하여 1 초마다 볼륨을 확인할 수 있습니다.
활동 인 경우 키 누름을 감지하기 위해 onKeyDown
을 무시할 수 있습니다. http://developer.android.com/reference/android/view/View.html
5
실제로 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;
}
}
잊지 마세요 그것을 선언하는 서비스에 다음 코드를 사용하여 ... 통화 로그, 음량, 연락처로 내용을 변경하는 이벤트를 수신하는 방송 수신기처럼 작동 안드로이드 Manifest.xml
<service android:name=".service.VolumeService" >
0
이 그것을 할 수있는 한 방법입니다, 당신은 단지 세트 볼륨 대신의 변화에 해결할 수 있습니다. 내 목표는 시스템 볼륨 서비스를 조정하는 것이 었습니다.
또한 필요한 경우에만이 작업을 수행하지 마십시오.
public class VolumeKeyController {
private MediaSessionCompat mMediaSession;
private final Context mContext;
public VolumeKeyController(Context context) {
mContext = context;
}
private void createMediaSession() {
mMediaSession = new MediaSessionCompat(mContext, KeyUtil.log);
mMediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mMediaSession.setPlaybackState(new Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 0, 0)
.build());
mMediaSession.setPlaybackToRemote(getVolumeProvider());
mMediaSession.setActive(true);
}
private VolumeProviderCompat getVolumeProvider() {
final AudioManager audio = mContext.getSystemService(Context.AUDIO_SERVICE);
int STREAM_TYPE = AudioManager.STREAM_MUSIC;
int currentVolume = audio.getStreamVolume(STREAM_TYPE);
int maxVolume = audio.getStreamMaxVolume(STREAM_TYPE);
final int VOLUME_UP = 1;
final int VOLUME_DOWN = -1;
return new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_RELATIVE, maxVolume, currentVolume) {
@Override
public void onAdjustVolume(int direction) {
// Up = 1, Down = -1, Release = 0
// Replace with your action, if you don't want to adjust system volume
if (direction == VOLUME_UP) {
audio.adjustStreamVolume(STREAM_TYPE,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
else if (direction == VOLUME_DOWN) {
audio.adjustStreamVolume(STREAM_TYPE,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
setCurrentVolume(audio.getStreamVolume(STREAM_TYPE));
}
};
}
// Call when control needed, add a call to constructor if needed immediately
public void setActive(boolean active) {
if (mMediaSession != null) {
mMediaSession.setActive(active);
return;
}
createMediaSession();
}
// Call from Service's onDestroy method
public void destroy() {
if (mMediaSession != null) {
mMediaSession.release();
}
}
}
관련 문제
- 1. 볼륨 기본 설정 - 볼륨 키 차단
- 2. 아이폰/아이팟 볼륨 레벨을 감지하는 방법은 무엇입니까?
- 3. 앱에서 볼륨 키 사용
- 4. 볼륨 키 제어
- 5. 볼륨 키 및 PhoneGap으로 스크롤보기?
- 6. Android에서 볼륨 키 가져 오기
- 7. 안드로이드의 볼륨 변경을 수신하는 리스너가 있습니까?
- 8. 스크롤 웹보기 볼륨 키 부와 II
- 9. 마이크 녹음 볼륨 조정
- 10. 안드로이드의 전화 볼륨 대신 멀티미디어 볼륨
- 11. 볼륨 변경 리스너?
- 12. iPhone에서 마이크 볼륨 확인
- 13. GNOME에서의 볼륨/믹서 조작
- 14. 볼륨, 뒤로 및 통화 키 비활성화
- 15. iOS 4.0 볼륨 페이드
- 16. PCM 샘플의 볼륨 시각화
- 17. AppleScript로 볼륨 스위치
- 18. BroadcastReceiver TTS 및 볼륨
- 19. 키 서비스를 통한 이벤트
- 20. 구현 키보드 볼륨 조절 버튼 - 루프 내에서 볼륨 설정은
- 21. JMF 마이크 볼륨 컨트롤러
- 22. SHOUTcast 볼륨 피크 테스트
- 23. 볼륨 컨트롤 용 UIPanGestureReconizer
- 24. WCF HTTP 끝점 볼륨
- 25. Silverlight Mac 마이크 볼륨
- 26. 그림자 볼륨 - 실루엣 찾기
- 27. iPod 볼륨 레벨이 앱 볼륨 레벨에 영향을 미침
- 28. 시스템 소리가 볼륨 레벨을 무시합니다.
- 29. Android에서 파일 또는 폴더 변경을 감지하는 방법은 무엇입니까?
- 30. 녹음 중에 마이크 볼륨 받기
나중에 전화가 잠겨 있지 않을 때 작동하지만 휴대 전화가 잠겨 있지 않을 때 !! ?? – Hardik
안녕하세요, 전화가 잠겨있는 동안 키 감지를받을 수있는 옵션이 있습니까? –