Проблема в приложении записи вызовов
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()
- помочь?