uni-app 插件需求 android平台获取文件路径支持"aac","mp3","m4a","amr","awb"格式

uni-app 插件需求 android平台获取文件路径支持"aac",“mp3”,“m4a”,“amr”,"awb"格式

查看uniapp插件市场发现没有支持用户将手机里面的aac,m4a,amr,awb格式的文件上传功能

7 回复

自带的api,不是可以吗?
可以用原生插件搞

更多关于uni-app 插件需求 android平台获取文件路径支持"aac","mp3","m4a","amr","awb"格式的实战教程也可以访问 https://www.itying.com/category-93-b0.html


自带的不可以

上传文件还要分格式?没听说过

上传的是打电话时的录音,或者谈话时候的录音,格式是不同的

可以做,联系QQ:1804945430

在uni-app中,如果你需要在Android平台上获取特定格式(如"aac", “mp3”, “m4a”, “amr”, “awb”)的文件路径,可以通过调用原生插件或者利用Android的媒体存储API来实现。以下是一个简单的示例,展示如何通过调用Android原生方法来获取这些格式的文件路径。

首先,你需要创建一个自定义的原生插件。这里我们假设你已经熟悉如何创建和集成uni-app的原生插件。以下是Android端的代码示例:

Android原生插件代码

  1. 创建插件接口

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);
    }
}
  1. manifest.json中注册插件

确保在uni-app项目的manifest.json中正确注册了这个插件。

  1. 在前端调用插件

在你的uni-app项目中,可以通过JavaScript调用这个插件:

uni.requireNativePlugin('AudioFilePicker').getAudioFiles((result) => {
    console.log('Audio file paths:', result);
});

注意事项

  • 确保你的应用有读取外部存储的权限。
  • 在实际使用中,考虑使用ContentUrisUri来处理文件,而不是直接依赖文件路径,因为Android Q及以上版本对文件访问有更强的隐私保护。
  • 插件中的MIME类型可能需要根据你的具体需求进行调整,例如audio/mp4a-latm可能不完全等同于m4a,但在这个例子中为了简洁而使用。

以上代码提供了一个基本的框架,你可以根据需要进行扩展和优化。

回到顶部