Android语言基础教程(191)Android多媒体应用播放音频与视频范例之播放SD卡上的全部音频文件:Android音频播放骚操作!一键扫描SD卡,你的手机秒变行走点唱机

一、开篇:你和音乐播放器,只差一个SD卡的距离

兄弟们,有没有遇到过这种场景:地铁上突然想听手机里存的《恐龙抗狼》,结果翻遍文件夹找到歌曲时,都到站了……(泪目)别慌!今天咱们直接搞票大的——用Android代码自动扫描SD卡所有音频,做个“全网最懂你”的播放器!

先拍胸脯保证:这篇教程拒绝教科书式念经,全程用程序员黑话翻译技术难点。比如把“MediaPlayer生命周期”叫成“音乐播放的作死与保命指南”,把“文件权限”比喻成“App和手机的结婚证”——懂了没?就是要让你笑着把代码啃下来!

(突然正经)为啥要从SD卡读音频?因为现在手机内存比初恋的心还难猜,视频照片一存,秒变砖头。而SD卡简直就是外挂硬盘,存几百首《孤勇者》都不带喘气的。接下来,咱们分四步走:权限坑位排雷 → SD卡掘金术 → 播放器灵魂操控 → 列表视觉暴击,结尾还送完整源码,接稳了!


二、权限:和手机系统斗智斗勇的第一战

想让App读取SD卡?系统第一个跳出来拦你:“小样儿,凭啥给你看我的隐私?!” 所以咱们得先搞两张“通行证”:

1. 在AndroidManifest.xml里宣誓主权(简单说就是静态权限):

<!-- 读外部存储的入门券 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- 如果想兼容Android 10以上,补张高级VIP卡 -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>

2. 运行时跪求用户开绿灯(动态权限):
现在用户都是大爷,得弹窗求授权。来看代码怎么“戏精附体”:

// 在Activity里检查权限是否被临幸
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) 
    != PackageManager.PERMISSION_GRANTED) {
    // 如果没授权,赶紧撒娇弹窗
    ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
        1314); // 1314是请求码,随便写个数字当暗号
} else {
    // 已经授权?立马开扫!
    scanAudioFiles();
}

3. 处理用户翻牌结果

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
    if (requestCode == 1314 && results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
        scanAudioFiles(); // 用户点头了,冲!
    } else {
        Toast.makeText(this, "不给权限?音乐播放器直接变砖!", Toast.LENGTH_LONG).show();
    }
}

注意:Android 13以上要用READ_MEDIA_AUDIO,别傻傻只用老权限,否则代码会表演“当场自闭”!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值