云梦音守 2024-02-07 20:31 采纳率: 0%
浏览 4

HTML5 写的项目用 hbuilder 打包成 Android 的 APP

用HTML5 写的项目用 hbuilder 打包成 Android 的 APP,安装在平板上,想调用平板视频文件夹里面的视频,播放视频的Src路径怎么写?
平板里面的视频,查看属性,显示路径为/storage/emulated/0/Movies/1.mp4。按照这个路径写进去,视频无法播放!

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-07 20:33
    关注

    引自免费微信小程序:皆我百晓生

    在HBuilder中,使用HTML5和JavaScript开发的项目打包成Android App后,访问本地文件系统中的视频需要通过Webview的File API或者原生API进行权限申请和文件路径处理。由于浏览器的安全策略限制,直接使用file:///协议可能无法加载外部存储设备(如SD卡)上的文件。

    针对您的问题,尝试以下解决方案:

    1. 获取读取外部存储权限: 在manifest.json文件中配置应用权限,确保APP具有读取外部存储的权限:

      "permissions": [
          "android.permission.READ_EXTERNAL_STORAGE"
      ]
      
    2. 使用uni-app提供的API: 如果你使用的是uni-app框架来构建你的项目,可以利用它封装好的API来读取本地文件:

      uni.chooseVideo({
        sourceType: ['album', 'camera'], // 来源可以是相册或相机
        success: function(res) {
          var videoSrc = res.tempFilePath; // 获取到选择的视频临时路径
          // 使用video标签播放视频
          var videoElement = document.getElementById('your-video-id');
          videoElement.src = videoSrc;
          videoElement.play();
        }
      });
      

      但如果你想直接指定平板视频文件夹内的某个视频,请参考uni-app的其他文档了解如何访问特定路径下的文件。

    3. 调用原生模块读取文件并返回给前端: 若需直接访问固定路径的视频,可能需要编写原生插件,并通过JSBridge将文件路径转换为可被WebView加载的资源路径。

    4. 尝试Content Provider方式: Android系统推荐使用Content Provider来访问媒体文件,而不是直接使用文件路径。不过这种方式通常涉及到原生代码部分,你需要创建一个URI来指向该视频文件。

      假设你已经拥有该文件的content Uri,可能是类似content://media/external/video/media/XXX的形式,那么理论上可以在WebView中使用这个Uri作为src属性值来加载视频。但在实际操作中,可能需要额外处理才能让WebView支持这种加载方式。

    请注意,对于直接访问 /storage/emulated/0/Movies/1.mp4 这样的绝对路径,常规Webview并不支持。务必遵循所使用的跨平台框架提供的规范和方法来访问本地资源。如果确实需要按照绝对路径播放,请查阅HBuilder、uni-app或对应平台的相关文档及API以获取更准确的帮助。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月7日

悬赏问题

  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下
  • ¥15 android 蓝牙闪退
  • ¥15 绝缘子污秽comsol仿真参数
  • ¥15 Fatal error in Process MEMORY
  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码