我想实现定制这样一个android设备:
修改这个android设备的音频输出HAL层,不再调用tinyalsa的接口,而是创建一个tcp client客户端,同时在我的ubuntu电脑已经有一个tcp server端服务。HAL层代码的把调用tinyalsa的open,write,close等接口换成tcp client接口,即用户在android上点击播放音乐后,HAL层代码会connect连接到ubuntu电脑,接着会send音乐数据给ubuntu,ubuntu电脑来实现播放音乐功能。
但我在AOSP的emulator模拟器的device/generic/goldfish/audio/device_port_sink.cpp中调用tcp socket时,执行第一行代码int fd = socket(AF_INET, SOCK_STREAM, 0); 这个fd返回是小于0,errno=13,strerror(errno)=Permission denied。看起来是权限需要修改,但不知道如何改这个权限,我执行了adb shell setenforce 0,但问题依旧,请问如何修改权限?谢谢!
备注一下:我编译的AOSP版本是repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r26,lunch sdk_phone_x86_64-eng。之后运行emulator,使用的audio hal是在device/generic/goldfish/audio目录下。
AOSP audio HAL 权限
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
17条回答 默认 最新
关注 获得1.05元问题酬金 引自强大而免费的微信小程序:皆我知道。
要修改AOSP音频HAL层的权限,您可以按照以下步骤进行操作:
- 打开
device/generic/goldfish/audio/device_port_sink.cpp
文件。 - 定位到调用
socket
函数的代码行,例如您提到的int fd = socket(AF_INET, SOCK_STREAM, 0);
。 - 在此代码行之前添加以下代码,以提高权限:
if (setuid(AID_MEDIA) != 0) { ALOGE("Failed to set uid to AID_MEDIA, errno: %d", errno); return -1; }
这将使用
AID_MEDIA
用户(用户标识符)提升您的权限。注意:您还需要在
device/generic/goldfish/audio/device_port_sink.cpp
文件的开头包含以下头文件:#include <private/android_filesystem_config.h>
这应该能够解决您在调用
socket
时遇到的权限问题。记得重新构建和运行您的AOSP设备来应用更改。希望能对您有所帮助!如果您有更多问题,请随时提问。
解决 1无用- 打开
悬赏问题
- ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿速度
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址