Android 감청 음량 변화 실현
3498 단어 Android볼 륨 을 감청 하 다
최근 프로젝트 에서 볼 륨 감청 및 변경 요구 사항 이 언급 되 었 습 니 다.
음량 의 변 화 를 감청 하려 면 두 가지 방법 이 있 습 니 다.
1.감청 볼 륨 키 의 변화
방법:activity onKeyDown 함수 재 작성
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
// up
return false;
case KeyEvent.KEYCODE_VOLUME_DOWN:
// down
return false;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
장점:빠 르 고 편리 하 며 간단 하 다단점:
1.볼 륨 키 를 소모 하여 이벤트 변경(false 로 되 돌아 가도 소 용 없 음),실측
2.이 감청 은 현재 Activity 에 대해 서로 다른 Ac 는 onKeyDown 함 수 를 다시 써 야 합 니 다.
3.두 번 째 점 에서 알 수 있 듯 이 전체 응용 범위 의 감청 을 할 수 없다.
2.볼 륨 변 화 를 가 져 오 는 방송
시스템 볼 륨 이 변 할 때 라디오 를 보 내 고 이 걸 감청 하면 됩 니 다.볼 륨 이 변 하 는 action 은?
android.media.VOLUME_CHANGED_ACTION
구체 적 인 참조 코드:(kotlin 버 전)
class VolumeChangeHelper(var context: Context){
private var mVolumeBroadCastReceiver: VolumeBroadCastReceiver? = null
private var mVolumeChangeListener: VolumeChangeListener? = null
companion object{
const val VOLUME_CHANGE_ACTION = "android.media.VOLUME_CHANGED_ACTION"
const val EXTRA_VOLUME_STREAM_TYPE = "android.media.EXTRA_VOLUME_STREAM_TYPE"
}
private var audioManager: AudioManager? = context.getSystemService(Context.AUDIO_SERVICE) as? AudioManager
fun registerVolumeChangeListener(volumeChangeListener: VolumeChangeListener){
mVolumeChangeListener = volumeChangeListener
mVolumeBroadCastReceiver = VolumeBroadCastReceiver()
val filter = IntentFilter()
filter.addAction(VOLUME_CHANGE_ACTION)
if(mVolumeBroadCastReceiver != null){
//
context.registerReceiver(mVolumeBroadCastReceiver!!, filter)
}
}
fun unregisterReceiver(){
if(mVolumeBroadCastReceiver != null){
context.unregisterReceiver(mVolumeBroadCastReceiver!!)
mVolumeBroadCastReceiver = null
}
}
interface VolumeChangeListener{
fun onVolumeDownToMin()
fun onVolumeUp()
}
//
inner class VolumeBroadCastReceiver : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
if(intent?.action == VOLUME_CHANGE_ACTION && intent?.getIntExtra(EXTRA_VOLUME_STREAM_TYPE, -1) == AudioManager.STREAM_MUSIC){
val currentVolume = audioManager?.getStreamVolume(AudioManager.STREAM_MUSIC) ?: -1
if(currentVolume > 0){
mVolumeChangeListener?.onVolumeUp()
} else if( currentVolume == 0){
mVolumeChangeListener?.onVolumeDownToMin()
}
}
}
}
}
전체 감청 을 실현 하려 면 하나의 app 수명 주기 에 존재 하 는 Context 에서 감청 할 수 있 습 니 다.예 를 들 어 MainActivity 등 입 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.