Android: откройте «/ dev / snd / pcmC0D1p» в нативном коде в телефоне без рута - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать собственное приложение для 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.

...