1

Когда я пытаюсь выполнить эту часть кода в версии для Android Lollipop. Все в порядке. Но в Зефир версии не работает:Воспроизведение аудиопотока с AudioTrack в Marshmallow

public static void play() { 

    InputStream generetedStream = ...; 

    int minBufferSize = AudioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); 
    AudioTrack trackw = new AudioTrack(AudioManager.STREAM_MUSIC, 16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM); 


    int bufferSize = 1024; 
    byte[] lin = new byte[bufferSize]; 
    trackw.play(); 

    int i = 0; 
    if (generetedStream != null) { 
     while (generetedStream != null && (i = generetedStream.read(lin, 0, bufferSize)) > -1) { 
      trackw.write(lin, 0, lin.length); 
     } 
    } 

} 

Добавлены разрешения:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

есть ли меняющийся аудиодорожки в Зефир версии ???

+0

вы не забудьте Запрос хранения/и т.д. Права доступа во время выполнения? Вы играете из хранилища/интернет-ресурсов/генерируете? –

+0

Для Android версии 5 все в порядке. но в версии 6 есть нарушение голоса –

+0

Я получил его. На вопрос не об этом. 'InputStream generetedStream' из ресурса или интернета или хранилища или вы генерируете его самим? –

ответ

3

Попробуйте установить разрешение на исполнение для версии 6.0.

if(Build.VERSION.SDK_INT>=23){ 
    int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, 
      Manifest.permission.READ_PHONE_STATE); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(MainActivity.this, 
       new String[]{Manifest.permission.READ_PHONE_STATE}, 
       MY_PERMISSIONS_REQUEST_READ_PHONE_STATE); 
    } else { 
     // your code 
    } 
}else{ 
    // your code 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_READ_PHONE_STATE: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission granted -code 

      } else { 

       // permission not granted - code 
      } 
     } 
    } 
} 

Вы можете добавить другое разрешение в зависимости от того, необходимые ...

+0

Проблема не в том, как я могу написать разрешение во время выполнения. Проблема в том, почему AudioTrack не работает с Marshmallow. Но тот же код подходит для Lollipop. –

 Смежные вопросы

  • Нет связанных вопросов^_^