2013-02-15 1 views
12

태블릿 헤드폰 잭에서 전원을 공급받는 외부 장치를 사용하는 삼성 태블릿 용 Android 애플리케이션이 있습니다. 외부 장치의 전원이 켜지면 (프로그래밍 방식으로 볼륨을 최대 값으로 늘림) Android에 다음과 같은 경고 팝업이 잠깐 표시됩니다. '소리가 너무 길면 큰 소리로 음악을들을 수 있습니다.'라는 메시지가 표시됩니다. 표시됩니다.안드로이드에서 "시끄러운 음악으로 청력에 해를 입을 수 있습니다 ..."경고 표시

여기에 코드의 잘못된 라인이다 :

mAudioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 

그것은 단지 그것을 중턱 설정하는 옵션이 아니다. 사실, 최대 설정보다 낮은 볼륨 설정에서도 태블릿에 경고 (수동으로 볼륨을 변경할 때)가 표시되는 것을 보았습니다.

예, 원본 볼륨을 녹음하고 외부 장치를 다 끝내면 복원합니다.

의견을 보내 주셔서 감사합니다.

+0

다른 태블릿에서도 마찬가지입니까? 나는 이것이 삼성의 타블렛 (또는 아마 하나)에 특정한 것이라고 생각한다. 나는 내 장치에서 본 적이 없다. –

+0

@ Tanis.7x - 다른 태블릿에 대해서는 잘 모르겠습니다. 이 장치는 외부 장치 제조업체가 인증 한 것이므로 선택했습니다. –

+0

Nexus 7에서도 마찬가지입니다. 대부분 헤드폰이므로 외장 스피커 용 Android의 기능입니다. – MCeley

답변

0

이 답변을 많이 고려해도 될지 모르겠지만 액세스 할 수있는 것이 아니라 자동으로 시스템에 표시되는 메시지를 삭제할 수는 없습니다. 내 삼성 갤럭시 S3도 똑같은 일을합니다.

또한 인터넷에서 읽을 수있는 것에서 일부 안드로이드 장치는 "당신의 청력을 해치지 않습니다."와 같이 잭 스틱을 넣을 때 볼륨을 낮 춥니 다.

어쩌면 그 전후에 나만의 알림을 표시하여 알림을 무시할 수 있습니까? 알림은 단지 표준 Toast입니다.

+0

화면의 아무 곳이나 두드리면 경고가 사라지는 것을 보았습니다. 이제 우리는 외부 장치를 활성화 (볼륨을 최대로 설정) 한 다음 활동을 포 그라운드로 가져 오거나 화면 탭. –

+1

@MikeHedman과 나는 그 같은 haxxy 것이 당신의이 문제점을위한 유일한 해결 방법이라고 믿습니다. – Warpzit

+0

@MikeHedman 추가 의견을 추가하려고합니다. haxxy 해결 방법은 새로운 android 출시로 인해 변경 될 것으로 예상 될 수 있으며 휴대 전화 제조사 및 버전에 따라주의해야 할 수도 있습니다. – Warpzit

1

시스템 메시지를 비활성화 할 수 없으며 사용자가 수동으로 볼륨을 낮추면 문제가 발생하므로 도움이 될 일련의 컨트롤을 제안하십시오. 맥스 볼륨 :

public void maxVolume() { 
    AudioManager audioManager = (AudioManager)context.getSystemService(this.AUDIO_SERVICE); 
    while (audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) < audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)) { 
     audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0); 
    } 
} 

수동으로 변경 볼륨에서 사용자를 방지하려면 :

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
     || (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 
     || (keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)) { 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

당신은 당신의에서 onCreate 방법 maxVolume()를 호출하고, 나중에 당신이 잭을 사용 직전에 호출 할 수 있습니다 출력 절차에 따라 시스템이 볼륨을 변경하지 않았는지 확인하십시오. 또는 리스너를 등록하여 볼륨 변경을 수신하고 maxVolume()을 정적으로 만들고 리스너에서 호출 할 수 있습니다. 희망이 당신을 도와주세요!

1

나는이 질문이 꽤 오래되었다는 것을 알고 있지만, 나는이 문제를 직접 다루었 다. 나는 다른 사람이이 일을하는 데 도움이되는 경우에 내가 찾은 답변에 덧붙일 것이라고 생각했습니다.

여기에있는 게시물 중 하나는 경고가 AOSP에 없다고 언급하고 있지만 이는 사실이 아닙니다. 여기 VolumePanel :: SafteyWarning 클래스를 참조하십시오 : 당신이 SafetyWarning 클래스를 통해 정독 한 후에는 disableSafeMediaVolume라는 AudioManager 클래스의 내부에 숨겨진 방법이 있음을 알 수 있습니다 VolumePanel::SafetyWarning

. 리플렉션을 통해이 숨겨진 메소드를 충분히 쉽게 호출 할 수 있지만 그렇게하면 시스템 권한 "android.permission.STATUS_BAR_SERVICE"가 필요하므로 보안 예외가 발생합니다.

그래서 ... 내가 말할 수있는 한이 대화 상자는 시스템 권한이없는 한 프로그래밍 방식으로 표시 할 수 없습니다.

우리가 제품 관리의 축복으로 끝낸 것은 SharedPreferences에 볼륨 설정을 캐시 한 다음 응용 프로그램을 시작할 때 캐시에서 다시 설정하는 것입니다. 경고 대화 상자의 임계 값을 초과하면 경고가 표시되고 사용자는 원하는 볼륨 설정을 가져 오려면 확인을 눌러야하지만 최소한 수동으로 볼륨을 재설정 할 필요는 없습니다 .

왜이 대화 상자가 표시되지 않는지에 대한 몇 가지 다른 참고 사항이 있습니다. 헤드폰 (또는 이어 버드 또는 유선 헤드셋)이 장치에 연결되어 있고 특정 임계 값 (이 임계 값이 60 % 인 Samsung Galaxy Tab A)에서 미디어 볼륨 스트림을 설정하려고 시도하는 경우에만 볼 수 있습니다. 대화 상자에서 확인을 누르면 장치를 다시 시작하거나 헤드폰 플러그를 뽑았다가 다시 연결하지 않으면 (임계 값 이상으로 설정된 볼륨으로) 다시 표시되지 않습니다.

희망이 있으면 도움이됩니다.

+0

이 메소드에는 Android 4.2에서 4.4까지의 권한이 필요하지 않습니다. 그러나 그것은 5.0+를 위해한다. :-( –

관련 문제