你好SO社区,
我正在使用html和js以及webview为Android做一个应用程序。该应用程序按下按钮(html)播放声音。感谢你(SO人)我可以使用这段代码使它工作:java =
myJSInterface = new MyJSInterface(getApplicationContext());
webview.addJavascriptInterface(myJSInterface, "Android");
公共类MyJSInterface {
Context mcontext;
MediaPlayer mp;
MyJSInterface(Context c) {
mcontext = c;
}
public void MyAudioPlayer01(int audio) {
/** play sound from the web page */
if (issound) {
Integer[] soundid = { null, null, R.raw.s01, R.raw.s02,
R.raw.s28, null, null, R.raw.xdhiboun, };
if (soundid[audio] != null) {
mp = MediaPlayer.create(mcontext, soundid[audio]);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
mp = null;
}
});
}
}
}
我通过js调用上面的代码:js code =
Android.MyAudioPlayer01(audio);
这适用于Android 4.1.2,但不适用于上面!
你能提出一些建议吗(我一整天都在搜索)?
我也试过没有运气的soundPool: - (
是否与js和webview安全更新有关?我需要为更新的Android版本添加更多权限吗?媒体播放器已经过时了吗? ...
感谢您的帮助。
答案 0 :(得分:0)
我发现了问题:
警告:如果您已将targetSdkVersion设置为17或更高,则必须 将@JavascriptInterface注释添加到您想要的任何方法 可用于您的JavaScript(该方法也必须是公共的)。如果你 不提供注释,您的方法无法访问 在Android 4.2或更高版本上运行时的网页。
现在使用mediaplayer和soundpool一切正常。
YOUPI: - )
谢谢大家,和平。