小编Vic*_*orn的帖子

Android 4.0.4 WebView MediaPlayer错误(1,-2147483648)使用<audio>标记和本地资产文件

我是Android的新手,并且一直试图让HTML5 <audio>标签在WebView浏览器中运行,但不断获得MediaPlayer错误(1,-2147483648).我正在尝试播放的文件位于"assets"目录下.我尝试在"res/raw"目录中引用一个文件,但结果相同.

为了验证文件是否可以找到和播放,作为我的测试的一部分,我创建了一个代码的变体,声音将通过<a>标签触发,并由WebViewClient处理,使用以下建议:

Android:使用WebView播放资产声音

它工作(虽然我不得不从URL中删除领先的"file:/// android_asset"),但使用锚点并不是我希望页面运行的方式.我希望在页面打开时播放背景声音,并在点击某些<div>标签时通过Javascript触发其他声音.我在其他地方读到Android现在支持标签,但我没有运气,我正在使用最新的SDK.

我已经创建了一个精简的测试页面进行试验,其详细信息如下所示.我一直在找一个没有运气的解决方案.我不知道缺少什么(我的偏好是尽可能避免使用任何附加组件并且仅使用Android).

资产目录布局

assets
 > audio
   > a-00099954.mp3
   > a-00099954.ogg
 > image
 > script
 > style
 > video
 audioTest.html
Run Code Online (Sandbox Code Playgroud)

Java代码

package com.test.audiotag;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;

public class MainActivity extends Activity
{
    private WebView localBrowser;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       localBrowser = (WebView)findViewById(R.id.localbrowser);
       localBrowser.getSettings().setJavaScriptEnabled(true);
       localBrowser.loadUrl("file:///android_asset/audioTest.html");
   }
}
Run Code Online (Sandbox Code Playgroud)

表现

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android      ="http://schemas.android.com/apk/res/android"
          package            ="com.test.audiotag"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="14" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name             =".MainActivity"
                  android:label …
Run Code Online (Sandbox Code Playgroud)

audio android assets webview media-player

5
推荐指数
2
解决办法
7386
查看次数

Android WebView资产参考内存泄漏

我的Android 4.0.4应用程序包含一个WebView,用户可以通过该视图查看资产目录中本地存储的多个页面.在页面中循环时,最终会触发以下错误并且应用程序崩溃:

  • JNI ERROR(app bug):本地参考表溢出(max = 512)
  • 添加到JNI本地ref表失败(有512个条目)
  • VM中止
  • 致命信号11(SIGSEGV)位于0xdeadd00dd(代码= 1)

这个问题似乎与这里报道的问题有关:

我使用了以下链接中给出的Memory Analyzer Tool插件说明来检查详细信息:

http://therockncoder.blogspot.ca/2012/09/fixing-android-memory-leak.html

结果显示如下(无法发布屏幕截图,因此文本必须执行):

MAT摘录

Class Name                                                                                                                                                                                                                                                                                      | Shallow Heap | Retained Heap | Percentage
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                                                                                                                                                                                |              |               |           
java.lang.Thread @ 0x40daa320  Thread-39775 Thread                                                                                                                                                                                                                                              |           80 |    15,310,552 |     76.74%
|- byte[32768] @ 0x40d5a8d0  <!DOCTYPE html>.<html xml:lang="">.<head>.   <title>Android Test-HTML5-480PX-Page 0</title>.   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />.   <meta name="viewport" content="width=360, height=480">. <!--.   <meta name="viewport" co...|       32,784 |        32,784 |      0.16%
|- byte[32768] @ 0x40e25bb8 …
Run Code Online (Sandbox Code Playgroud)

memory android memory-leaks assets webview

5
推荐指数
1
解决办法
4375
查看次数

标签 统计

android ×2

assets ×2

webview ×2

audio ×1

media-player ×1

memory ×1

memory-leaks ×1