Я пытаюсь создать собственное приложение для Android, которое должно работать с нерутированными устройствами.Цель этого приложения - перенаправить и изменить пути звукового микшера.И на данный момент я тестирую свой код в рутированном телефоне и планирую протестировать его в нерутированном телефоне.
Во-первых, у меня они есть в папке / dev / snd (device = motorola g4).Таким образом, можно ясно видеть, что устройство, которое я пытаюсь открыть, находится там (pcmC0D1p)
comprC0D24 hwC0D16 hwC0D9 pcmC0D13c pcmC0D17c pcmC0D21c pcmC0D4p
comprC0D9 hwC0D32 pcmC0D0c pcmC0D13p pcmC0D17p pcmC0D22c pcmC0D5p
controlC0 hwC0D34 pcmC0D0p pcmC0D14c pcmC0D18c pcmC0D23c pcmC0D6c
hwC0D10 hwC0D37 pcmC0D10c pcmC0D14p pcmC0D18p pcmC0D25p pcmC0D6p
hwC0D1000 hwC0D5 pcmC0D10p pcmC0D15c pcmC0D19c pcmC0D2c pcmC0D7p
hwC0D13 hwC0D6 pcmC0D11c pcmC0D15p pcmC0D1c pcmC0D2p pcmC0D8c
hwC0D14 hwC0D7 pcmC0D12c pcmC0D16c pcmC0D1p pcmC0D3c timer
hwC0D15 hwC0D8 pcmC0D12p pcmC0D16p pcmC0D20c pcmC0D3p
И мои родные извлечения кода C, которые имеют проблему, следующие:
struct mixer_ctl *ctl;
const char* device = "/dev/snd/pcmC0D1p";
mixer = mixer_open(device);
И функция mixer_open
struct mixer *mixer_open(const char *device)
{
struct snd_ctl_elem_list elist;
struct snd_ctl_elem_info tmp;
struct snd_ctl_elem_id *eid = NULL;
struct mixer *mixer = NULL;
unsigned n, m;
int fd;
fd = open(device, O_RDWR);
if (fd < 0) {
ALOGE("Control open failed\n");
return 0
}
}
Так что моя проблема в том, что "open (device, O_RDWR);"терпит неудачу со следующим журналом.Независимо от того, когда вы тестировали телефон с рутом или без рута.
Control open failed --> this is my log :)
09-27 01:19:40.843 24403-24403/? W/ee.playbacktest: type=1400 audit(0.0:323): avc: denied { search } for uid=10117 name="snd" dev="tmpfs" ino=7893 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:audio_device:s0 tclass=dir permissive=0
Поэтому у меня есть несколько вопросов по этому поводу.1. Что я здесь не так делаю?2. Будет ли этот метод работать на телефоне без рута.(прямой доступ к звуковым устройствам) 3. Кто-нибудь знает сторонние библиотеки, которые могут предоставлять функции, аналогичные amix и aplay в библиотеке ALSA.