『牛角书』鸿蒙开发小小播放器

本文介绍了一位开发者在鸿蒙系统上构建一个小型音乐播放器的实践过程,包括权限申请、数据模型建立、UI界面设计以及播放逻辑实现。在应用中,用户需授予访问权限以播放内置的音乐。播放器界面包含音乐信息和控制按钮,使用ListContainer进行布局,点击事件触发播放服务的管理,实现播放、暂停、切换曲目等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鸿蒙开发小应用-音乐播放器

话不多说,展示。
第一次进去会申请访问权限,点击“始终允许”
在这里插入图片描述
点击“始终允许”后退出一下,再次点击进入该应用会看到一首音乐Dream it Possible,因为模拟器上只有这一首主题曲,可以点击播放。
在这里插入图片描述
播放器内容包括:播放器名称,音乐名,音乐作曲家,背景图,三个控制播放/暂停,上一曲/下一曲的按钮。

开发导图

一:资源获取

权限申请
    @Override
    public void onStart(Intent intent) {
   
   
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());

        if (verifySelfPermission("ohos.permission.READ_MEDIA") != IBundleManager.PERMISSION_GRANTED) {
   
   
            if (canRequestPermission("ohos.permission.READ_MEDIA")) {
   
   
                // 是否可以申请弹框授权(首次申请或者用户未选择禁止且不再提示)
                requestPermissionsFromUser(
                        new String[]{
   
   "ohos.permission.READ_MEDIA"}, MY_PERMISSIONS_REQUEST_RW);
            } else {
   
   
                new ToastDialog(this).setText("需要授予应用读取存储权限").setAlignment(LayoutAlignment.CENTER).show();
            }
        }
    }

当权限可以申请时需要重写下面的方法,获取权限申请的结果

 @Override
    public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {
   
   
        if (requestCode == MY_PERMISSIONS_REQUEST_RW) {
   
   // 匹配requestPermissions的requestCode
            if (grantResults.length > 0
                    && grantResults[0] == IBundleManager.PERMISSION_GRANTED) {
   
   
                new ToastDialog(this).setText("所有权限已经被授予").setAlignment(LayoutAlignment.CENTER).show();
            } else {
   
   
                new ToastDialog(this).setText("所有权限已经被拒绝").setAlignment(LayoutAlignment.CENTER).show();
            }
        }
    }
数据模型

一个音乐的实体类

public class MusicBean {
   
   
    private int id;
    private String title;
    private String song;
    private String data;
    private String duration;
    private String artist;
    private String album;
    构造方法,get,set方法省略
    }
数据读取

数据读取需要做两件事1.通过访问外部存储的URL获取ResultSet

    private ResultSet queryAvStore(Context context) {
   
   
        ResultSet resultSet = null;
        DataAbilityHelper helper = DataAbilityHelper.creator(context);
        try {
   
   
            resultSet = helper.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值