uni-app 插件需求 android平台获取文件路径支持"aac","mp3","m4a","amr","awb"格式
uni-app 插件需求 android平台获取文件路径支持"aac",“mp3”,“m4a”,“amr”,"awb"格式
查看uniapp插件市场发现没有支持用户将手机里面的aac,m4a,amr,awb格式的文件上传功能
自带的api,不是可以吗?
可以用原生插件搞
更多关于uni-app 插件需求 android平台获取文件路径支持"aac","mp3","m4a","amr","awb"格式的实战教程也可以访问 https://www.itying.com/category-93-b0.html
自带的不可以
上传文件还要分格式?没听说过
上传的是打电话时的录音,或者谈话时候的录音,格式是不同的
可以做,联系QQ:1804945430
专业插件开发 q 1196097915
https://ask.dcloud.net.cn/question/91948
在uni-app中,如果你需要在Android平台上获取特定格式(如"aac", “mp3”, “m4a”, “amr”, “awb”)的文件路径,可以通过调用原生插件或者利用Android的媒体存储API来实现。以下是一个简单的示例,展示如何通过调用Android原生方法来获取这些格式的文件路径。
首先,你需要创建一个自定义的原生插件。这里我们假设你已经熟悉如何创建和集成uni-app的原生插件。以下是Android端的代码示例:
Android原生插件代码
- 创建插件接口
在src/main/java/your/package/name/plugins
目录下创建一个Java类,比如AudioFilePicker.java
:
package your.package.name.plugins;
import android.Manifest;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
import java.util.ArrayList;
import java.util.List;
public class AudioFilePicker extends UniModule {
public void getAudioFiles(UniJSCallback callback) {
List<String> filePaths = new ArrayList<>();
String[] projection = {MediaStore.Audio.Media.DATA};
String selection = MediaStore.Audio.Media.MIME_TYPE + " IN (?, ?, ?, ?, ?)";
String[] selectionArgs = {"audio/aac", "audio/mp3", "audio/mp4a-latm", "audio/amr", "audio/vnd.awb"};
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
ContentResolver resolver = getContext().getContentResolver();
Cursor cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
filePaths.add(filePath);
}
cursor.close();
}
}
callback.invoke(filePaths);
}
}
- 在
manifest.json
中注册插件
确保在uni-app项目的manifest.json
中正确注册了这个插件。
- 在前端调用插件
在你的uni-app项目中,可以通过JavaScript调用这个插件:
uni.requireNativePlugin('AudioFilePicker').getAudioFiles((result) => {
console.log('Audio file paths:', result);
});
注意事项
- 确保你的应用有读取外部存储的权限。
- 在实际使用中,考虑使用
ContentUris
和Uri
来处理文件,而不是直接依赖文件路径,因为Android Q及以上版本对文件访问有更强的隐私保护。 - 插件中的MIME类型可能需要根据你的具体需求进行调整,例如
audio/mp4a-latm
可能不完全等同于m4a
,但在这个例子中为了简洁而使用。
以上代码提供了一个基本的框架,你可以根据需要进行扩展和优化。