相关疑难解决方法(0)

从SD卡播放mp3声音

我的平板电脑SD卡上有一个名为"/Android/data/com.example.android.app/files"的目录.我刚刚手动创建它,因为我不知道如何测试我的应用程序的这个方面.我有一个存储在sqlite数据库中的文件名,如"/folder1/audio1.mp3","/ folder2/audioio1.mp3"等...文件名相同,但是在不同的文件夹中,因为它们是相同的东西是不同的语言.我有这些文件夹(folder1和folder2)以及SD卡上"/Android/data/com.example.android.app/files"目录中的所有mp3文件.

所以,我从数据库中获取文件名,然后我尝试使用以下命令访问SD卡上的文件夹:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.example.android.app/files";
Run Code Online (Sandbox Code Playgroud)

这基本上最终使路径"storage/Android/data/com.example.android.app/files".

现在,我在早期开发期间在我的原始文件夹中有几个mp3文件,但最后会有太多文件留在该文件夹中,所以我开始调查从SD卡获取它们.当我把它们放在原始的时候,我得到它们是这样的:

rid = getResources().getIdentifier(filname,  "raw", "com.example.android.app");
Run Code Online (Sandbox Code Playgroud)

现在,随着SD卡上的文件,它变为:

filename = "/folder1/audio.mp3"
Run Code Online (Sandbox Code Playgroud)

而不是"原始"我有:

"storage/Android/data/com.example.android.app/files"
Run Code Online (Sandbox Code Playgroud)

并基本上像这样玩:

AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(rid);
mMP.reset();
mMP.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mMP.prepare();
mMP.start();
afd.close();
Run Code Online (Sandbox Code Playgroud)

然而,现在这种方法似乎都没有相同的方法.

你能从SD卡上的mp3文件中获取resourceid吗?这对我来说甚至是适当的方式吗?我是否应该采用不同的方式来播放它们,无论源是内部存储器还是外部存储器?

完全糊涂了.

编辑:我确实找到这可能会有所帮助...但它可能只有等式.

编辑2:我在这里看.它使用我认为不是我想要的媒体商店.

mp3 android sd-card playback

8
推荐指数
1
解决办法
2万
查看次数

Android权限请求代码问题

如何申请许可?我试过文档,但是常量的int请求代码MY_PERMISSIONS_REQUEST_CALL_PHONE似乎只是工作,还有其他什么要记住的向后兼容性?

ActivityCompat.requestPermissions(getApplicationContext(),
                            new String[]{Manifest.permission.READ_CONTACTS},
                            MY_PERMISSIONS_REQUEST_CALL_PHONE);
Run Code Online (Sandbox Code Playgroud)

如何声明MY_PERMISSIONS_REQUEST_CALL_PHONE常量int?

android phone-call android-permissions

1
推荐指数
1
解决办法
6737
查看次数