我正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
我还包括了android权限:
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
我试图使用原始的流类型(但是它引发了不建议使用的警告):
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
Run Code Online (Sandbox Code Playgroud)
因此,我改用了.setAudioAttributes(...)
我曾经尝试运行的方法,prepare()而不是prepareAsync()给出问题的标题,但仍然导致相同的错误。我没有运气就调查了实际的错误定义(Android MediaPlayer错误(1,-2147483648))。我认为这不是源问题,因为我尝试了其他多个流。如果我跳过了可能导致我的错误的关键内容,请告诉我。
编辑
如果有帮助,我一直在调查我的通话,发现MediaPlayer从未通话onPrepared(...) …
我开始使用 Flutter 的 WebView 插件在我的应用程序中显示 Facebook 提要。我想限制应用程序用户可以在应用程序 webview 中执行的操作,换句话说,我不希望他们能够访问我显示的初始页面之外的另一个其他 facebook 域。我不希望用户能够登录 Facebook,而不仅仅是能够看到这个不需要帐户的打开的 Facebook Feed。
我尝试托管 Facebook Page 插件,它是一个 iFrame 或 Javascript SDK 插件,但我没有任何运气,因为 webview 不是用来处理这个的。相反,我决定通过 URL 链接到 Facebook 页面。我想避免用户浏览整个 Facebook,所以我能想到的最好方法是限制 URL。
我正在使用 WebView 小部件:
return WebView(
initialUrl: 'https://www.facebook.com/specific-facebook-page-here',
javascriptMode: JavascriptMode.disabled,
);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以监控他们的 URL 并避免他们访问 Facebook 域的部分内容?