zik8000 2009-12-07 18:20
浏览 382
已采纳

如何实现 本地html页面能播放mp3

我做了一个android应用是读取本地的html,模拟器中html里的超链接跳转没问题,图片也可以显示。html里的mp3文件却无法打开,请问高手怎么解决。

搞了两天了。。。。。郁闷啊。啊。谢谢谢谢。。

下面是我的其中一段html代码。

<td width="284">
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
     <td width="284" valign="middle">
        <a href="../voices/anyengmenu.mp3"><font size="5">Do you have a menu in English? </font><img src="../images/design/icon_voice.jpg" alt="" border="0" /></a>
  </td>
    </tr>                               
</table>   
</td>
问题补充:
在html里加入object或embed 标签的话,模拟器编译不了。
sound标签不在android模拟器里都读不到mp3.

问题补充:
lich0079

你是在android里实现的?

怎么我直接用你的代码也没效果。。。。
问题补充:
读取的是程序里的html页面,不是远程。
问题补充:
我怎么点击以后没声音啊。其本上是复制你的代码。

<a id="yule_item1000" parent="1000"  onclick="window.temp.goItem('toilet.mp3', '1000', this.type)" type="audio">棉花糖1</a>

super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
web = (WebView) this.findViewById(R.id.wv);
web.getSettings().setJavaScriptEnabled(true);
    web.addJavascriptInterface(new Object() {   
         public void goItem(String url, String parentId, String type) {
                if (player != null) {
                    player.stop();
                    player = null;
                }
                 if (type.equalsIgnoreCase("audio")) {
                    try {
                        player = new MediaPlayer();
                        player.setDataSource(url);
                        player.prepare();
                        player.start();
                    } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }  
        }, "demo");   

    web.loadUrl("file:///android_asset/index.html");// 加载网页</pre><br /><strong>问题补充:</strong><br />player.setDataSource("file:///android_asset/"+url);
  • 写回答

3条回答 默认 最新

  • Puras 2009-12-10 13:32
    关注

    我做过一个在HTML里点击链接,播放MP3的,
    使用WEBView来做HTML的展示
    HTML如下:
    [code="html"]棉花糖[/code]

    之后在Activity中,为WebView增加一个JavaScript实现:
    [code="java"]webview.addJavascriptInterface(new ItemListJavaScriptHandler(), "temp");[/code]

    具体的JavaScript的方法实现如下:
    [code="java"]
    public void goItem(String url, String parentId, String type) {
    if (player != null) {
    player.stop();
    player = null;
    }
    if (type.equalsIgnoreCase("audio")) {
    try {
    player = new MediaPlayer();
    player.setDataSource(DCDContext.SDCARD_FILE_PATH + url);
    player.prepare();
    player.start();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    [/code]

    不知道是不是你想要的效果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable