zik8000
zik8000
2009-12-07 18:20

如何实现 本地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 Puras 12年前

    我做过一个在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]

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

    点赞 评论 复制链接分享
  • cqllang cqllang 12年前

    读取url的mp3绝对地址应该能放吧?

    从你的页面里不能直接打开?

    取得你的网址+"/voices/anyengmenu.mp3"这样的绝对地址传给程序的播放调用。。

    不太明白你要做的是什么样的东东?

    html是要放在android程序中还是远程去调?

    点赞 评论 复制链接分享
  • iteye_11997 iteye_11997 12年前

    以前做过

    点赞 评论 复制链接分享

相关推荐