Usama Wajid Ответов: 1

Проблема в приложении записи вызовов


I'm working on Call Recording Android Application & facing issue in  application, when i'm recording call only speaker voice is recording but Incomming voice is not recording, i already changed all setting of audio format but facing same issue,
If anyone worked on call recording android application , kindly help me. 
Thanks...!


Что я уже пробовал:

Here is code.


public class RecordingService extends Service {
    private MediaRecorder rec;
    private boolean recoderstarted;
    private File file;
    String path = "sdcard/alarms/";

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //return super.onStartCommand(intent, flags, startId);

        file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
        Date date = new Date();
        String stringDate = DateFormat.getDateTimeInstance().format(date);
        rec = new MediaRecorder();
        rec.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
        rec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        rec.setOutputFile(file.getAbsoluteFile() + "/" + stringDate + "callrec.3gp");
        rec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        TelephonyManager manager = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
        manager.listen(new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                super.onCallStateChanged(state, incomingNumber);
                if (TelephonyManager.CALL_STATE_IDLE == state ){
                    try {
                        if (rec == null) {
                            rec.stop();
                            rec.reset();
                            rec.release();
                            recoderstarted = false;
                            rec = null;
                            stopSelf();
                            Toast.makeText(getApplicationContext(),"Recording Stop.",Toast.LENGTH_SHORT).show();
                           
                        } else {
                            rec.stop();
                            rec.reset();
                            rec.release();
                            recoderstarted = false;
                            rec = null;
                            stopSelf();
                            Toast.makeText(getApplicationContext(),"Recording Stop.",Toast.LENGTH_SHORT).show();
                           
                        }
                    }
                    catch(Exception e) {
                        e.printStackTrace();
                    }
                }
                else if(TelephonyManager.CALL_STATE_OFFHOOK==state){
                    try {
                        file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
                        Date date = new Date();
                        String stringDate = DateFormat.getDateTimeInstance().format(date);
                        rec = new MediaRecorder();
                        rec.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
                        rec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                        rec.setOutputFile(file.getAbsoluteFile() + "/" + stringDate + "callrec.3gp");
                        rec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                        TelephonyManager manager = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
                    rec.prepare();
                    rec.start();
                    recoderstarted=true;
                        Toast.makeText(getApplicationContext(),"Recording Start.",Toast.LENGTH_SHORT).show();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }


            }
        }, PhoneStateListener.LISTEN_CALL_STATE);

        return START_STICKY;
    }
}

David Crow

Хотя это и не решение вашей проблемы, я все же наткнулся на нее. этот"Большинство этих приложений полагаются исключительно на ваш микрофон для записи как входящего, так и исходящего звука." Может быть, это поможет вам выбрать лучшее направление.

Здесь это еще одна ссылка, которую я нашел. Это выглядит более многообещающе.

Usama Wajid

Тогда как увеличить громкость микрофона во время записи?

David Crow

Делает AudioManager.adjustVolume() - помочь?

1 Ответов

Рейтинг:
0

JoCodes

Вы пробовали увеличить громкость

audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
 audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL), 0);


Также проверить здесь[^]