在/external/tinyalsa/pcm.c 添加android log

本文介绍了一个用于Android音频框架调试的方法,通过定义不同的日志宏来记录不同级别的信息,包括信息、警告和错误等。该方法主要应用于音频硬件接口的调试,并涉及到AudioFlinger组件的相关源代码。

 //////////////////////////////////////////////////////////////////////////// 

  #include <android/log.h>
   #define LOG_TAG "audio_hw_primary"
  

   #define  LOGI(...) __android_log_print(ANDROID_LOG_INFO, "MCA", __VA_ARGS__)       //MCA is TAG
   #define  LOGW(...) __android_log_print(ANDROID_LOG_WARN, "MCA", __VA_ARGS__)
   #define  LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "MCA", __VA_ARGS__)

 

 

  LOGE("pcm_open() start %s",fn);  //使用
/////////////////////////////////////////////////////////////////////////////

下面文件打开 调试方法

../frameworks/av/services/audioflinger/AudioFlinger.cpp
../frameworks/av/services/audioflinger/Threads.cpp
../hardware/imx/alsa/tinyalsa_hal.c

  #define LOG_NDEBUG 0

 


 

Android 系统中,`content://com.tencent.mobileqq.fileprovider/external_files/storage/emulated/0/Android/data/com.tencent.mobileqq/files/` 是一个典型的通过 `FileProvider` 暴露的 URI,用于在应用之间安全地共享文件[^1]。 ### URI 结构解析 1. **content://** 这是 Content URI 的协议部分,表示这是一个通过 `ContentResolver` 访问的内容 URI。 2. **com.tencent.mobileqq.fileprovider** 这是 QQ 应用定义的 `FileProvider` 的 authority,用于标识该 URI 是由 QQ 提供的文件提供者来处理的。 3. **external_files/storage/emulated/0/Android/data/com.tencent.mobileqq/files/** 这部分是文件在设备上的实际路径,被映射到 `FileProvider` 中,用于对外提供访问权限。具体路径指向的是应用的私有目录下的 `files` 文件夹。 - `storage/emulated/0` 通常代表设备的内部存储根目录。 - `Android/data/com.tencent.mobileqq/files/` 是 QQ 应用私有文件存储路径之一,用于存放应用运行时所需的文件。 ### FileProvider 的作用 `FileProvider` 是 Android 提供的一个特殊的 `ContentProvider` 子类,用于安全地共享应用私有文件。从 Android 7.0(API 24)开始,系统禁止通过 `file://` URI 共享文件,以防止 `FileUriExposedException`,因此必须使用 `content://` URI 来共享文件。 ### 如何访问该 URI 的内容 要访问该 URI 的内容,通常需要使用 `ContentResolver` 来打开输入流: ```java Uri uri = Uri.parse("content://com.tencent.mobileqq.fileprovider/external_files/storage/emulated/0/Android/data/com.tencent.mobileqq/files/your_file.txt"); try (InputStream inputStream = getContentResolver().openInputStream(uri)) { // 读取文件内容 } catch (IOException e) { e.printStackTrace(); } ``` ### 注意事项 - **权限问题**:访问该 URI 需要目标应用(如 QQ)授予临时的 URI 读写权限,通常通过 `Intent` 的 `FLAG_GRANT_READ_URI_PERMISSION` 或 `FLAG_GRANT_WRITE_URI_PERMISSION` 来实现。 - **路径映射**:`FileProvider` 的路径映射是在 `res/xml/` 目录下的 `file_paths.xml` 文件中定义的,开发者需要配置哪些目录可以被共享。 ### 示例:file_paths.xml ```xml <paths> <external-files-path name="external_files" path="." /> </paths> ``` 上述配置允许通过 `FileProvider` 共享应用的外部私有文件目录。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值