uni-app Android 通知栏音乐控制播放/上一首/下一首小插件

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app Android 通知栏音乐控制播放/上一首/下一首小插件

通过Android 通知栏,控制音乐的播放/暂停/ 上一首/下一首 功能,我们很常见的音乐类APP都会有的音乐播放控件,通过 uniapp 插件扩展也可以实现这个功能,在开发视听类APP时,为混合APP增加多一种特色。

如何使用,最好在程序主页面操作,避免其他子页面关掉后,而失效。

1. 引用插件

var music= require('../../common/html5app-music-not.js');

2.插件的相关方法

方法名称 说明
show() show 方法包含4个参数 ,调用它会显示通知栏播放控件出来,1. 歌曲标题,2.歌曲封面图片,3.上一首按键是否可用, 4.下一首按钮是否可用。
setplayicon() music.setplayicon(false); 默认false , false 显示暂停图标, true 显示播放图标
setlastOrnext() music.setlastOrnext({last:“false”,next:“true”}); 设置上一首、下一首按键是否可用
close() music.close(); 关掉通知栏

3. 安卓扫一扫,下载体验

扫一扫下载 安卓 DEMO 示例 体验, 或者电脑下载

原文链接 :http://www.html5-app.com/show/118


1 回复

uni-app 中实现 Android 通知栏音乐控制播放/上一首/下一首小插件,可以通过集成原生插件的方式来实现。由于 uni-app 本身是基于 Vue.js 的跨平台框架,直接操作原生 Android 组件需要借助原生插件或者通过自定义组件的方式。以下是一个简化的实现思路及代码示例,展示如何通过原生插件来实现这一功能。

步骤一:创建原生插件

  1. 在 Android Studio 中创建插件项目
    • 创建一个新的 Android 项目。
    • 在项目中添加一个 Service,用于处理通知栏的逻辑。
    • 使用 NotificationCompat.Builder 来构建通知栏,并添加播放、上一首、下一首的 Action 按钮。
// MyMusicService.java
public class MyMusicService extends Service {
    private NotificationManager notificationManager;
    private NotificationCompat.Builder builder;
    private MediaPlayer mediaPlayer;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 初始化 MediaPlayer 和 Notification
        // ...

        Intent playIntent = new Intent(this, MyMusicService.class);
        playIntent.setAction(ACTION_PLAY);
        PendingIntent playPendingIntent = PendingIntent.getService(this, 0, playIntent, 0);

        Intent prevIntent = new Intent(this, MyMusicService.class);
        prevIntent.setAction(ACTION_PREV);
        PendingIntent prevPendingIntent = PendingIntent.getService(this, 0, prevIntent, 0);

        Intent nextIntent = new Intent(this, MyMusicService.class);
        nextIntent.setAction(ACTION_NEXT);
        PendingIntent nextPendingIntent = PendingIntent.getService(this, 0, nextIntent, 0);

        builder.addAction(R.drawable.ic_play, "Play", playPendingIntent)
               .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent)
               .addAction(R.drawable.ic_next, "Next", nextPendingIntent);

        Notification notification = builder.build();
        startForeground(NOTIFICATION_ID, notification);

        return START_STICKY;
    }

    // 处理播放、上一首、下一首的逻辑
    // ...
}

步骤二:集成插件到 uni-app

  1. 将插件打包成 .aar 文件

    • 在 Android Studio 中 Build -> Make Project,生成 .aar 文件。
  2. uni-app 中引用插件

    • .aar 文件放置在 native/plugins/android 目录下。
    • manifest.json 中配置插件信息。
// manifest.json
{
  "nativePlugins": {
    "MyMusicPlugin": {
      "package": "com.example.mymusicplugin",
      "version": "1.0.0",
      "provider": "path/to/MyMusicPlugin.aar"
    }
  }
}
  1. uni-app 中调用插件方法
    • 使用 plus.android.invoke 方法调用插件提供的接口来控制音乐播放。
// 在 Vue 组件中
const MyMusicPlugin = plus.android.importClass('com.example.mymusicplugin.MyMusicPlugin');
const context = plus.android.runtimeMainActivity();
const serviceIntent = new plus.android.intent.Intent(context, MyMusicPlugin);
context.startService(serviceIntent);

注意:以上代码是简化示例,具体实现中需要考虑更多细节,如生命周期管理、资源释放、错误处理等。此外,uni-app 原生插件的开发和集成需要一定的原生开发基础,建议查阅 uni-app 和 Android 官方文档获取更多信息。

回到顶部