通知中的音乐播放器控制

2023-12-19

如何在 Android 中设置带有播放/暂停、下一个和上一个按钮的通知!

我是 Android 新手,也是堆栈溢出新手。所以请耐心听我说。

我设置了歌曲开始播放时的通知,如下所示:

`

@SuppressLint("NewApi")
public void setNotification(String songName){
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager notificationManager = (NotificationManager) getSystemService(ns);


    @SuppressWarnings("deprecation")
    Notification notification = new Notification(R.drawable.god_img, null, System.currentTimeMillis());

    RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_mediacontroller);

    //the intent that is started when the notification is clicked (works)
    Intent notificationIntent = new Intent(this, AudioBookListActivity.class);
    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

    notification.contentView = notificationView;
    notification.contentIntent = pendingNotificationIntent;
    notification.flags |= Notification.FLAG_NO_CLEAR;

    //this is the intent that is supposed to be called when the button is clicked
    Intent switchIntent = new Intent(this, AudioPlayerBroadcastReceiver.class);
    PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, 0);

    notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent);
    notificationManager.notify(1, notification);        
}

`

我创建了 BroadcastReceiver,如下所示: `

   private class AudioPlayerBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        System.out.println("intent action = " + action);
        long id = intent.getLongExtra("id", -1);

        if(Constant.PLAY_ALBUM.equals(action)) {
            //playAlbum(id);
        } else if(Constant.QUEUE_ALBUM.equals(action)) {
            //queueAlbum(id);
        } else if(Constant.PLAY_TRACK.equals(action)) {
            //playTrack(id);
        } else if(Constant.QUEUE_TRACK.equals(action)) {
            //queueTrack(id);
        } else if(Constant.PLAY_PAUSE_TRACK.equals(action)) {
 //                playPauseTrack();
            System.out.println("press play");
        } else if(Constant.HIDE_PLAYER.equals(action)) {
 //                hideNotification();
            System.out.println("press next");
        }
        else {
        }
    }

}`

现在,我成功设置了自定义通知,但如何处理通知按钮及其事件,如播放/暂停、上一个和下一个...等。我也尝试使用广播接收器,但无法得到任何响应。

寻求专家的解决方案和指导,请帮帮我。

提前致谢。


你需要设置一个custom intent action,不是AudioPlayerBroadcastReceiver组件类。

创建一个具有自定义操作名称的 Intent,如下所示

  Intent switchIntent = new Intent("com.example.app.ACTION_PLAY");

然后,注册PendingIntent Broadcast接收者

  PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 100, switchIntent, 0);

然后,设置一个onClick对于播放控件,如果需要,请对其他控件执行类似的自定义操作。

  notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent);

接下来,在中注册自定义操作AudioPlayerBroadcastReceiver像这样

   <receiver android:name="com.example.app.AudioPlayerBroadcastReceiver" >
        <intent-filter>
            <action android:name="com.example.app.ACTION_PLAY" />
        </intent-filter>
    </receiver>

最后,当点击播放时Notification RemoteViews布局,您将收到play action by the BroadcastReceiver

public class AudioPlayerBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if(action.equalsIgnoreCase("com.example.app.ACTION_PLAY")){
        // do your stuff to play action;
    }
   }
}

EDIT: 如何为代码中注册的广播接收器设置意图过滤器

您还可以设置Custom Action通过Intent filter来自注册的代码Broadcast receiver像这样

    // instance of custom broadcast receiver
    CustomReceiver broadcastReceiver = new CustomReceiver();

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
    // set the custom action
    intentFilter.addAction("com.example.app.ACTION_PLAY");
    // register the receiver
    registerReceiver(broadcastReceiver, intentFilter); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通知中的音乐播放器控制 的相关文章

  • Android主线程的IO操作

    我的问题有两个 是否建议在 Android 的主线程上进行 IO 操作 或者它是否有可能导致我的应用程序崩溃 如果在主线程上执行 IO 操作不理想 我可以使用哪些其他框架 以便当我的应用程序加载时它可以执行一些基本的 IO 文件读取并将值存
  • 如何使用 gradle 从 3 个子模块构建 1 个 jar

    I have 安卓工作室3 gradle 4 1 梯度工具3 classpath com android tools build gradle 3 0 1 当我有一个模块并使用 gradle 工具 2 时 我使用了 task makeJar
  • Android 应用程序安装失败:包 com.my.app 在条目 AndroidManifest.xml 处没有证书

    在 Android Studio 中 我生成了带有密钥库等的签名 APK 将 APK 安装到设备上时失败 并显示 无法安装应用程序 并且在 Android Monitor 中我看到以下行 Package com my app has no
  • Android:初始化本机 AudioRecord 对象时 AudioRecord 错误代码 -20

    Android 我想从麦克风读取缓冲区 以便我可以对其执行处理 以下是我的代码 int sampleRateInHz 8000 44100 22050 and 11025 int channelConfig AudioFormat CHAN
  • 改造中的多个队列导致内存不足错误?

    我正在使用retrofit2 做我的项目 当我的呼叫失败时 我再次重复相同的呼叫 重复此 呼叫使我的应用程序强制关闭 当我查看日志时 我得到了错误日志 如下所示 我觉得这是由于同一呼叫的多次排队造成的 所以我在排队之前就这样做了 我打电话给
  • 覆盖 Android 中的电源按钮

    我正在开发一个应用程序 其中我需要在按下电源按钮时执行一个操作 但不幸的是我无法处理按下电源按钮时的操作 我尝试使用 onKeyDown 和dispatchKeyEvent 方法 但似乎没有任何效果 任何人都可以建议我解决这个问题的任何其他
  • 华为手机“受保护的应用程序”设置及处理方法

    我有一台搭载 Android 5 0 的华为 P8 用于测试应用程序 该应用程序需要在后台运行 因为它跟踪 BLE 区域 我发现华为内置了一个名为 受保护的应用程序 的 功能 可以从手机设置 电池管理器 gt 受保护的应用程序 访问该功能
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • HMS 核心地图套件在我的 Android 应用程序上根本无法工作

    我正在尝试在我的应用程序中使用华为 HMS 地图套件 我对整体地图很陌生 无论是来自谷歌还是华为 我按照文档中的教程以及华为提供的代码实验室中的说明进行操作 并将我的代码在一起 但是当我运行地图活动时 什么也没有出现 我得到的只是一个空白活
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • MIUI 权限被拒绝活动 KeyguardLocked

    当应用程序处于后台且屏幕被锁定时 我无法启动活动 没有异常或警告 只是不调用 onCreate 我一直在与这个问题作斗争 我想我终于找到了它的根源 日志中有一行 D com android server am ExtraActivityMa
  • Android 上的 MIDI:Java 和/或 AIR 库

    一段时间以来 我一直在考虑在 iPad 上 重新 构建一个应用程序 其中我将使用 Objective C 和DSMI http dsmi tobw net 将 MIDI 信号发送到主机 这还不错 我的意思是 除了实际编写应用程序之外 现在我
  • 在运行时更改用作背景的 Drawable xml 内的形状纯色

    我有一个 Drawable xml 文件 background xml
  • 安卓。 CalendarView...一次仅显示一个月的日历

    我正在使用 CalendarView 其中我想一次仅查看一个月的日历并滚动查看下个月 但 CalendarView 一次显示所有月份 下面是我的代码
  • Android模拟器中的网络访问

    我试图通过我的 Android 应用程序访问互联网 但我既成功又失败 我在构建应用程序时启动模拟器 并且应用程序安装得很好 我可以使用浏览器访问互联网 但是 当我尝试这个小代码片段时 InetAddress inet try inet In
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 如何更改操作栏背景和文本颜色

    我正在使用本教程中的导航抽屉 http www androidhive info 2013 11 android sliding menu using navigation drawer http www androidhive info

随机推荐

  • 如何在 Kotlin 中声明具有两种类型的变量,例如 val x:Int 或 String

    我要写一个像这样的方法 object UIBehavior fun dialog context Context title Int String message Int String val dialogObj AlertDialog B
  • R将多个url放入lapply中

    我有一个字符向量中的 url 列表 我想在 查询 因为如果不是 则 x 查询将被拒绝 urls c url1 url2 url3 这是我想做的 htmlpages lapply urls function x readLines x Sys
  • 当单元格内有文本时如何获得表格单元格的正确高度

    历史 形状大小不等于表格单元格大小并适合形状内的文本 https stackoverflow com questions 63428548 shape size not equal to the table cell size and fi
  • NuGet 不复制配置文件

    我现在尝试了很多不同的事情 但似乎都没有达到预期的效果 我想与我的库共享一个示例配置 或图像或其他 文件 有人可以使用它并从中派生 我尝试默认为只是为了这样做 我尝试通过以下方式将其包含在 nuget 包中 nuspec并通过 csproj
  • C++ 应用程序中的 QML 或反之亦然 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 考虑一个简单的 GUI 显示相当复杂的计算输出的情况 现在我想使用编写一个漂亮的自定义 GUIQML 我还想写我的后台应用程序QT C 我坐在
  • 通过互操作打开文档时如何使 word 可见?

    我想通过互操作打开一个word文档 并且word必须在该过程中可见 它看起来相当简单 因为在word文档的打开函数中有一个名为 visible 的参数 但是word在后台 什么我失踪了吗 static void Main string ar
  • .NET (C#) 中的“StandardIn 尚未重定向”错误

    我想使用标准输入做一个简单的应用程序 我想在一个程序中创建一个列表并在另一个程序中打印它 我想出了以下内容 我不知道 app2 是否有效 但是在 app1 中我收到异常 StandardIn 尚未重定向 在 writeline 上 在 fo
  • 如何修复 WordPress 自定义主题以与插件一起使用?

    这是我第一次尝试编写自定义 WordPress 主题 而且我已经快完成了 与任何事物一样 存在一些错误 但我尝试了几种不同的选项来修复它们 但没有成功 链接为 www studiosimplicit com wp 我的第一个问题是事件页面上
  • 我的对象在 Three.js 中不反射光线

    我在 Three js 场景中有一些基于 CubeGeometry 的网格 它们都反映了我在全局使用的 PointLight 但其中之一 仅用 THREE Geometry 通过代码添加顶点和面 手工 制作的 没有反映出来 即使它没有颜色
  • 使用 openssl C 进行 AES(aes-ige-128、aes-ige-192、aes-ige-256)加密/解密

    最近 我终于 在 stackoverflow 用户 WhozCraig 的帮助下 开始在 CBC 模式下使用 AES 现在 我想做完全相同的事情 但使用 AES IGE 我看了一下openssl 1 0 1e test igetest c并
  • 获取当前页面并移动到Primeng数据表中的特定页面

    我正在使用 primefaces primeNg 的数据表 我可以获取当前所在页面并以编程方式将数据表设置为特定页面吗 我看到数据表使用了分页组件 但是如何使用 ViewChild访问它 任何帮助将不胜感激
  • 在 Objective-C 类中使用时,无法在调试区域中看到 Swift 对象层次结构

    我的问题可能很简单 但我却迷失了方向 任何评论 想法 帮助 预测都会非常有用 这是我的课程 试用SwiftClass swift import Foundation objc public class TrialSwiftClass NSO
  • CAML > 通过 URL 获取项目

    此 CAML 是否可以正常工作 我用 u2u 尝试过 但它不显示 URL 列 我收到此错误 System ApplicationException 一个或多个字段类型未正确安装 请转到列表设置页面删除这些字段
  • 为什么 crypt/blowfish 使用两种不同的盐生成相同的哈希值?

    这个问题与 PHP 的实现有关crypt http php net manual en function crypt php 对于这个问题 salt的前7个字符不算在内 所以一个salt 2a 07 a 的长度被认为是 1 因为它只有 1
  • SVN 外部意外状态问题

    我正在尝试SVN External 我想要做的是拥有一个外部文件夹并将库从那里复制到我的 Lib 文件夹中 I went to SVN Externals and there added the lib folder and path to
  • 我应该始终使用 override 上下文关键字吗?

    我知道override引入 contextual 关键字是为了编写更安全的代码 通过检查virtual具有相同签名的函数 但我对此感觉不太好 因为它对我来说似乎是多余的override每次我想覆盖virtual功能 不使用是一个坏习惯吗ov
  • 如何在不显示窗口的情况下运行PowerShell脚本?

    如何才能运行一个电源外壳 http en wikipedia org wiki Windows PowerShell脚本而不向用户显示窗口或任何其他标志 换句话说 脚本应该在后台安静地运行 而不向用户发出任何信号 不使用第三方组件的答案需额
  • 使用键打印字典中的最高值[重复]

    这个问题在这里已经有答案了 我的字典是这样的 A 4 B 10 C 0 D 87 我想用它的键找到最大值 用它的键找到最小值 输出将是这样的 最大 87 键是D 分钟 0 键是C 我知道如何从字典中获取最小值和最大值 有没有办法在一个语句中
  • IDictionary 或 NameValueCollection

    我目前正在编写一个接口 允许应用程序将异常数据发送到中央存储库以用于支持目的 我对如何传递额外的上下文数据感到困惑 public interface IExceptionNotifier void Notify Exception ex N
  • 通知中的音乐播放器控制

    如何在 Android 中设置带有播放 暂停 下一个和上一个按钮的通知 我是 Android 新手 也是堆栈溢出新手 所以请耐心听我说 我设置了歌曲开始播放时的通知 如下所示 SuppressLint NewApi public void