0

你好 SO 社区,

我正在使用 html 和 js 以及 webview 为 android 做一个应用程序。该应用程序在按钮单击 (html) 时播放声音。多亏了你(这么多人),我可以使用以下代码使其工作: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 版本添加更多权限吗?媒体播放器过时了吗?...

谢谢您的帮助。

4

1 回答 1

0

我发现了问题:

注意:如果您将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是公共的)。如果您不提供注释,则在 Android 4.2 或更高版本上运行时,您的网页将无法访问该方法。

现在使用媒体播放器和声音池一切正常。

优皮:-)

谢谢大家,平安。

于 2013-11-02T19:05:04.800 回答