Cordova 封装 Android插件 ————原生播放mp3文件

实现音频播放Cordova移动开发实战 如何实现app音频播放功能 框架选择为比较流行的JQuery Mobile 音频播放插件:cordova plugin add cordova-plugin-media 一、html文件代码 代码为: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &lt... 阅读详情

一、安装Cordova

环境准备:java,Android SDK 或者 Android Studio(Android studio 会自动安装sdk),node.js

使用 npm 安装 Cordova

#安装cordova
npm install -g cordova

#安装插件管理器
npm install -g plugman 

创建Cordova项目

cordova create myapp com.lzx.app MyApp
# myapp 目录名称
# com.lzx.app 包名/工程id
# MyApp 项目名称

添加Android项目代码

# 进入项目的目录
cd myapp
cordova platform add android --save

创建插件

plugman create --name MyPlugin --plugin_id com.lzx.plugins --plugin_version 1.0.0
# MyPlugin --插件名称
# com.lzx.plugins --插件包名
# 1.0.0 --插件版本

生成插件 java 文件

plugman platform add --platform_name android

生成Android代码后src文件夹下会多出一个文件
在这里插入图片描述
www文件下的js文件时声名给js调用的方法
在这里插入图片描述

修改plugin.xml文件

在这里插入图片描述
修改后的样子

<?xml version="1.0" encoding="utf-8"?>

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="com.lzx.plugins" version="1.0.0">
  <name>MyPlugin</name>
  <js-module name="MyPlugin" src="www/MyPlugin.js">
    <clobbers target="cordova.plugins.MyPlugin"/>
  </js-module>
  <platform name="android">
    <config-file parent="/*" target="res/xml/config.xml">
      <feature name="MyPlugin">
        <param name="android-package" value="com.lzx.plugins.MyPlugin"/>
      </feature>
    </config-file>
    <config-file parent="/*" target="AndroidManifest.xml"/>
    <source-file src="src/android/MyPlugin.java" target-dir="src/com/lzx/plugins"/>
  </platform>
</plugin>

初始化npm,生成package.json文件

npm init

在这里插入图片描述

插件创建完成,接下来安装插件到Cordova项目,使用Android Studio 打开Android代码实现插件具体的功能

切换到Cordova项目目录

cd Cordova目录
# 安装插件
cordova plugin add 插件路径

用Android studio 打卡Android项目

在这里插入图片描述
发现刚才的java文件一进导入项目
在这里插入图片描述
我们可以在这里实现播放mp3的功能
插件实现类

package com.lzx.plugins;

import android.media.MediaPlayer;
import android.net.Uri;
import android.widget.Toast;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * This class echoes a string called from JavaScript.
 */
public class MyPlugin extends CordovaPlugin {

    private MediaPlayer mediaPlayer = null;

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("start")) {
            String message = args.getString(0);
            this.start(message, callbackContext);
            return true;
        }else if(action.equals("stop")){
            String message = args.getString(0);
            this.stop(message, callbackContext);
            return true;
        }
        return false;
    }

    private void start(String message, CallbackContext callbackContext ){
        Toast.makeText(cordova.getActivity(),"开始播放",Toast.LENGTH_LONG).show();
        this.mediaPlayer = MediaPlayer.create(cordova.getContext(),MResource.getIdByName(cordova.getContext(),"raw","back"));
        this.mediaPlayer.start();
    }

    private void stop(String message, CallbackContext callbackContext ){
        Toast.makeText(cordova.getActivity(),"结束播放",Toast.LENGTH_LONG).show();
        mediaPlayer.stop();
    }

    private void coolMethod(String message, CallbackContext callbackContext) {

        if (message != null && message.length() > 0) {
            callbackContext.success(message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }
}

获取资源id类

package com.lzx.plugins;

import android.content.Context;

public class MResource {

    public static int getIdByName(Context context, String className, String resName) {
        String packageName = context.getPackageName();
        int id = 0;
        try {
            Class r = Class.forName(packageName + ".R");
            Class[] classes = r.getClasses();
            Class desireClass = null;
            for (Class cls : classes) {
                if (cls.getName().split("\\$")[1].equals(className)) {
                    desireClass = cls;
                    break;
                }
            }
            if (desireClass != null) {
                id = desireClass.getField(resName).getInt(desireClass);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return id;
    }

}

MP3文件资源

在这里插入图片描述

把实现需要的java文件和MP3资源文件拷到插件目录下

在这里插入图片描述
在这里插入图片描述

plugin.xml修改,配置文件子啊Android项目下的路径

在这里插入图片描述

插件实现完成

下面我们新创建一个Cordova项目来验证

# 创建项目步骤如上

# 添加插件


# js-调用,打包测试

Phaser 3 游戏开发入门:从零构建跨平台 2D 游戏 游戏开发的核心在于将创意转化为可交互的体验,其原理涉及渲染、物理模拟、资源管理与用户输入处理等多个技术模块。在 Web 技术栈中,HTML5 Canvas 和 WebGL 为实现高性能 2D/3D 图形渲染提供了基础,而 JavaScript 作为核心编程语言,其生态的复杂性也带来了诸如“a javascript error occurred in the main process”等运行时挑战。Phaser 3 框架的价值在于,它封装了这些底层复杂性,提供了一套完整的工具链,包括场景管理、物理引擎、动画系 阅读详情

相关推荐

cordova-plugin-media音频播放和录制

一、cordova-plugin-media 这个插件提供了在设备上记录和播放音频文件的能力。 安装命令: cordova plugin add cordova-plugin-media官方文档: http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/index.html 二、常用API整理 1.初

天马3798 4889

ionic使用cordovaMedia、cordovaFile和cordovaFileTransfer播放在线音乐

gzgchzc博客最新更新地址:http://blog.gzvtc.cc/ 首先安装cordovaNativeAudio和cordovaFileTransfer插件 cordova plugin add cordova-plugin-media cordova plugin add cordova-plugin-file cordova plugin add cordova-plugin-fi

gzgchzc的博客 3768

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 872

探索Cordova音乐控制插件:为您的移动应用增添音乐魅力

探索Cordova音乐控制插件:为您的移动应用增添音乐魅力 在移动应用开发的世界中,为用户提供无缝的音乐体验是提升应用吸引力的关键。今天,我们将深入了解一款强大的开源工具——Cordova音乐控制插件,它能够为您的Cordova应用带来丰富的音乐控制功能。 项目介绍 Cordova音乐控制插件是一款专为Cordova应用设计的插件,它允许开发者在应用中集成媒体通知功能。通过这一插件,用户可以轻松控...

gitblog_00173的博客 850

Unity UGUI深度优化

Unity UGUI优化相关

不定时分享所学所得,包括游戏开发和其他收获! 2717

别再手动调参数了!用3ds Max的tyDiffusion插件,5分钟搞定AI动态纹理生成

本文介绍了3ds Max的tyDiffusion插件如何通过AI技术快速生成动态纹理,大幅提升3D美术师的工作效率。从火焰、水流到布料飘动,tyDiffusion能在5分钟内完成传统手工需要数小时的任务,且效果更自然。文章详细解析了插件的核心功能、实战配置及进阶应用,帮助用户轻松实现AI动态纹理生成。

weixin_30919429的博客 666

我的Android进阶之旅------>Android MediaPlayer播放网络音频的实例--网络mp3播放器

上一篇写了个简单的MP3播放器 ,这次写一个可以播放网络音频资源的播放器 本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边听音乐一边做其他的事情。该播放器可以实现进度条的显示,拖动进度条,可以调节播放进度。 Step 1 :新建一个Android工程,命名为AudioNetPlayer Step 2: 设计UI...

移动编程 352

WorkBuddy结合DeepSeek与Skill:文献检索自动化与Token成本控制实战

Agent工具与大模型API的结合正重塑知识工作者的日常流程。在实际工程中,调用大模型处理批量任务常面临Token消耗过快、成本不可控的痛点,而国产大模型DeepSeek以极低的API定价和兼容OpenAI接口的特性,为规模化文本处理提供了“Token自由”的可能。同时,可复用的Skill机制能够将特定领域的工作流固化为标准化步骤,让Agent自动执行检索式生成、文献筛选与摘要归纳等复杂操作。本文从这一技术背景出发,以科研文献检索为应用场景,演示如何利用WorkBuddy、DeepSeek API与自建文献

weixin_29061509的博客 482

【亲测免费】 探索 Cordova-plugin-media:新一代移动端音频处理解决方案

探索 Cordova-plugin-media:新一代移动端音频处理解决方案 在移动应用开发中,媒体处理能力是不可或缺的部分。无论是在教育、娱乐还是商务场景,播放和记录音频往往起到至关重要的作用。Apache 的 cordova-plugin-media 提供了一种简单易用的接口,允许开发者轻松地在 Android、iOS 和浏览器平台上实现音频操作。本文将深入剖析这个开源项目,带你了解其独特之处...

gitblog_01166的博客 851

Python 驱动 CAD 二次开发:从零搭建自动化绘图环境

本文详细介绍了如何利用Python进行CAD二次开发,实现自动化绘图。通过win32com库建立Python与CAD软件的通信,文章从环境搭建、连接CAD、操作文档到核心绘图与批量处理,提供了完整的实战指南。该方法能显著提升机械设计、建筑绘图等领域的重复性工作效率,将创造力从繁琐劳动中解放出来。

weixin_29093169的博客 1226

潜行游戏设计:核心机制与关卡设计解析

潜行游戏作为动作游戏的重要分支,通过视觉遮蔽、声音传播和AI行为树等复杂系统,为玩家提供独特的策略体验。视觉隐蔽系统采用视野锥和光照值的双重判定,声学传播模型模拟距离衰减和材质穿透,而敌人AI行为树则包含巡逻、警戒和团队协作等状态节点。这些技术不仅提升了游戏的真实感和挑战性,还在《合金装备》《刺客信条》等经典作品中得到广泛应用。潜行游戏的关卡设计强调多路径拓扑结构和环境叙事元素,通过沙漏模型和动态难度调节,平衡自由度和开发成本。未来,基于ML的适应性AI和物理模拟的隐蔽系统将成为创新方向。

weixin_42497762的博客 179

cordova media android不播放声音,cordova-plugin-media 录音并打包上传

一、录音.插件:cordova-plugin-media官网中的示例代码很详细了,src可以为"cdvfile://localhost/persistent/"的形式,但我未能测试通过,因此采用“name.wav”src: recordFileName = “name.wav”src的name命名有限制,在小米和华为测试中发现:不能有‘/’,否则文件无法播放,不能有“:”,否则文件无法读取。示例代...

weixin_42515120的博客 474

madgwick算法基于MPU9250姿态融合漂移问题的原因

基于MPU9250的madgwick算法姿态漂移问题原因 0、声明 因为这个是现象是不是共性目前本人还没研究过,只是在个体问题研究的基础上得出的结论,或许我买到的MPU9250是一个盗版:),所以只具备参考性。 1、现象 使用MPU9250的加速度计、角速度计、磁力计(AK8963)原始数据输入到madgwick算法中,得到的姿态最终会在停止姿态变化后仍然漂移一小段时间。其中加速度计和角速度计读取速率为400hz,磁力计为100hz,加速度计采样范围±2g,角速度计采样范...

GreedyZombie的博客 3872

破解游戏开发高门槛难题:GDevelop开源引擎的零代码进阶实战指南

在传统游戏开发中,技术栈复杂、学习曲线陡峭、开发周期漫长成为众多创作者的三大核心痛点。GDevelop作为一款开源无代码游戏引擎,通过创新的可视化事件系统架构,让2D/3D游戏开发变得前所未有的高效和可及。本文将深度解析GDevelop如何突破传统游戏开发的技术壁垒,提供从架构设计到实战部署的完整解决方案。 **核心关键词**:无代码游戏引擎、可视化事件系统、跨平台游戏开发 **长尾关键词*

gitblog_00832的博客 942

Hermes Agent 实战复盘:5 类超预期场景与3 个典型翻车案例分析

揭示 Hermes Agent 在 PDF 智能解析、低代码评审结构化、Kanban 任务驱动执行等五类未被文档覆盖的超预期落地场景,核心依赖 `soul.md`/`CLAUDE.md`/`kanban` 三层上下文建模机制,而非单纯堆 token 或 agent 数量。

weixin_42520239的博客 384

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android中的MediaPlayer、SoundPool、Assets

Android中的MediaPlayer、SoundPool、Assets。 在一款游戏或者APP中,除了华丽的界面UI直接吸引玩家或用户外,另外重要的就是游戏背景音乐与音效。合适的背景音乐以及精彩的音效搭配会令整个游戏或APP上升一个档次。 在Android中,常用于播放游戏背景音乐的类是MediaPlayer,而用于游戏音效的则是SoundPool类,其中与之相关的还有Assets文件夹。 ...

手写我对你的温柔 4237

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android中播放音乐的几种方式

Android中播放音乐的几种方式前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalyer 部分使用RxJava编写一点逻辑,其中涉及,RxJava2的被压、解除订阅等知识点,虽然简单,最起码没有丢了RxJava,后续Rxjava会继续研究,做记录. andorid提供了对声音

6万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android 原生播放音频有哪些方式

使用 MediaPlayer MediaPlayer特点 关于 SoundPool 关于 AudioTrack 关于 AudioRecord AudioRecord 降噪

Lud的博客 2442

【Android入门到项目实战-- 7.4】—— 如何播放音频和视频

Android如何播放多媒体文件,如何播放音频?如何播放视频?

个人博客 3830

【安卓】播放多媒体文件

在app/src/main这个目录下右击app/src/main→New→Directory,新建assets目录,在这个目录下放入一个音频文件。然后修改MainActivity中的代码。新建一个目录来放视频文件,右击app/src/main/res→New→Directory,在弹出的对话框中输入“raw”,然后修改MainActivity中的代码。在Android中播放音频文件一般是使用MediaPlayer类实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使播放音乐的工作变得十分简单。

君子慎独,不欺暗室。卑以自牧,含章可贞。 1815

cordova media插件

简介 使用Media插件可以在设备上播放音频与录制音频。   注意:当前实现并不是遵循W3C规范的媒体捕捉,这里只是提供方便。未来的实现将坚持最新的W3C规范和可能弃用当前的API。           安装 cordova plugin add cordova-plugin-media               支持的平台 · Android · B

michael的博客 6330

Cordova官方插件 -- Vibration、Media、NativeAudio

Cordova官方插件 -- Vibration、Media、NativeAudio

简单记录 7191

Android中音频文件的播放

上一回我们讲了如何去录制一个音频文件。这次我们讲讲如何播放一个音频文件。录制音频,一般我们在聊天发送语音,或者语音上传的时候会用到。那既然需要录制,那一定是要有播放功能的。同时,我们播放音频,音乐也是需要播放功能。所以今天我就说说音频的播放功能。 1.媒体播放器MediaPlayer简介 既然是播放音频,那就要用到MediaPlayer。MediaPlayer是Android自带的音频和视频播放器,可用于播放MediaRecorder录制的媒体文件,包括amr,aac,mp4,3gp,还有mp3,wav

水月洞天 3011

使用phonegap播放音频

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Compass...

孤云博客 1647

cordova media android不播放声音,通过cordova media实现录音播放问题

录音播放实现方案:终端上通过cordova实现录音,将录音Base64 文件传到服务器端进行解码保存,然后再在终端通过cordova进行播放Android平台没有问题IOS平台问题:问题1、由于cordova插件在IOS上只能使用.WAV格式进行录音,但是通过cordova插件直接播放.WAV文件失败(.MP3没有问题),看是否有遇到此问题的,如何解决?我目前想到的是做MAV到MP3的转码,最好是...

weixin_42612405的博客 416

cordova语音通话_cordova 调用手机振动,语音播放,音频播放,录音,语音合成

$scope.play = function () {navigator.vibrate([1000,1000,2000,1000,3000]);var text = "买单反有新的订单,请查收";//aud = "faded.mp3";var media;media = new Media(aud,function() {alert("Media Init Success");},functio...

weixin_39737831的博客 453
上一篇: CentOS安装docker-ce和docker-compose
下一篇: springBoot 使用MongoDB
1024程序猿~嗷~
博客等级 码龄10年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值