Android의 MediaPlayer를 사용하여 애플리케이션에서 URL 스트림을 설정하고 있습니다. 종료 코드와 오류를 처리하기 위해 여러 다른 게시물을 시도했습니다 : (1, -2147483648).
여러 다른 스트림을 시도했지만 MediaPlayer가 작동하지 않는 것 같습니다. Google의 ExoPlayer를 넘어가는 것에 대해 생각했지만 조금 더 복잡하고 뭔가 빠진 경우를 대비하여 점프하고 싶지 않습니다.
미디어 플레이어:
private MediaPlayer player;
String url = "http://199.180.75.118:80/stream"; //temp stream
private void initializeMediaPlayer() {
player = new MediaPlayer();
player.setAudioAttributes( new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
try {
player.setDataSource(url);
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Android 권한도 포함했습니다.
<uses-permission android:name="android.permission.INTERNET" />
원래 스트림 유형을 사용하려고 시도했지만 더 이상 사용되지 않는 경고가 표시됩니다.
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
그래서 대신 문제의 제목을 제공하는 대신 .setAudioAttributes(...)
실행하려고 시도 했지만 여전히 동일한 오류가 발생합니다. 나는 운이없는 실제 오류 정의를 조사했습니다 ( Android MediaPlayer 오류 (1, -2147483648) ). 여러 다른 스트림을 시도했기 때문에 소스 문제라고 생각하지 않습니다. 내 오류의 원인이 될 수있는 중요한 내용을 건너 뛰는 경우 알려주세요.prepare()
prepareAsync()
편집 도움이된다면 제 전화를 살펴 봤는데 MediaPlayer가 onPrepared(...)
. 테스트 한 모든 미디어의 콘텐츠 유형을 확인했으며 모두 오디오 / MPEG 헤더였습니다. 그래서 MediaPlay가 onPrepared에 액세스하지 않는 이유를 이해할 수 없습니다.
private void initializeMediaPlayer() {
player = new MediaPlayer();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
player.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setLegacyStreamType(AudioManager.STREAM_MUSIC)
.build());
} else {
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
try {
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
player.setDataSource(url);
player.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
}
onPrepared 전화를 몇 초 만에.
Android 9에서는 이것을 확인하십시오. https://developer.android.com/training/articles/security-config
AndroidManifest.xml은 networkSecurityConfig 속성을 추가합니다.
...
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
...
src / res / xml에 network_security_config.xml 파일 추가
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다