Запись телефонных звонков в Android 7.0 и выше

Я использовал этот код, работает для Android 5.1(MotoE и MotoX и еще 1 устройство) и 8.1.0(Nokia 6), но не работает для 8.0(One Plus 5) и 7.0(MotoG5).

        new Thread(new Runnable() {
            @Override
            public void run() {

                try {

                    recorder = new MediaRecorder();

                    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
                    recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    //recorder.setAudioEncodingBitRate(320000);
                    //recorder.setAudioSamplingRate(44100);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                File sampleDir = new File(Environment.getExternalStorageDirectory(), "/AutoCallPicker/PhoneCallRecord/");
                if (!sampleDir.exists()) {
                    sampleDir.mkdirs();
                }
                //String file_name = "Record";
                String file_name = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());//Naming according to date and time
                try {
                    audioFile = File.createTempFile(file_name, ".amr",
                            sampleDir);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //Set output file .
                recorder.setOutputFile(audioFile.getAbsolutePath());
                //String formattedMessage[] = audioFile.getAbsolutePath().split(Commands.SPLIT_BY_SLASH);
                //fileNameRecordedCall = formattedMessage[formattedMessage.length - 1].toString();
                try {
                    //Call prepare before start().
                    recorder.prepare();
                    //Start recording .
                    recorder.start();
                    recordStarted = true;
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

предоставленные разрешения

     <!-- Calling permission -->
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- permission to write on external storage -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Я также использовал Диспетчер политик устройств и назначил администратора устройства, как указано в принятом ответе по ссылке ниже. Как записывать телефонные звонки в Android?

но эта вещь не работает для любого устройства. Пожалуйста, помогите, какие настройки мне не хватает.

0 ответов

Другие вопросы по тегам