簡體   English   中英

android 10 (2019) 是否可以恢復語音通話錄音?

[英]Is voice call recording back with android 10 (2019)?

我對android中的通話錄音非常感興趣。 但是正如您已經知道的那樣,android 正式關閉了 android 9 中的語音通話錄音。但就在 Android 10 發布(2019 年 9 月 3 日)之后,在瀏覽他們的新發行說明時,我發現以下頁面看起來很有希望通話錄音。 https://developer.android.com/guide/topics/media/sharing-audio-input 在這里,關於語音通話錄音可以看到以下內容。

因此,在閱讀本文后,我嘗試在無障礙服務中捕獲音頻。 這是我的代碼。 無障礙服務

 public class MyAccessibilityService extends AccessibilityService { FrameLayout mLayout; public MyAccessibilityService() { } @Override public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) { } @Override public void onInterrupt() { } @Override protected void onServiceConnected() { WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); mLayout = new FrameLayout(this); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; lp.format = PixelFormat.TRANSLUCENT; lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; lp.width = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.TOP; LayoutInflater inflater = LayoutInflater.from(this); inflater.inflate(R.layout.action_bar, mLayout); wm.addView(mLayout, lp); configureStartRecording(); configureStopRecording(); } private void configureStartRecording() { Button startRecordingButton = mLayout.findViewById(R.id.btnStartRecording); startRecordingButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CustomMediaRecorder recorder = CustomMediaRecorder.getInstance(); File audiofile = null; String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(new Date()); File sampleDir = new File(getExternalFilesDir(null), "/TestRecordingDasa1"); if (!sampleDir.exists()) { sampleDir.mkdirs(); } String file_name = "Record"; try { audiofile = File.createTempFile(file_name, ".amr", sampleDir); } catch (IOException e) { e.printStackTrace(); } recorder.getRecorder().setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); recorder.getRecorder().setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); recorder.getRecorder().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.getRecorder().setOutputFile(audiofile.getAbsolutePath()); try { recorder.getRecorder().prepare(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } recorder.start(getApplicationContext()); Log.i(MainActivity.LOG_PREFIX, String.format("Recording started. Saving to path: '%s'", audiofile.getAbsolutePath())); } }); } private void configureStopRecording() { Button button = mLayout.findViewById(R.id.btnStopRecording); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CustomMediaRecorder recorder = CustomMediaRecorder.getInstance(); recorder.stop(); } }); }

並且無障礙服務配置具有以下配置

 android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canPerformGestures="true" android:canRetrieveWindowContent="true"

所以這是我的觀察。
1. 仍然無法設置MediaRecorder.AudioSource.VOICE_DOWNLINK 和VOICE_UPLINK 音頻源。 它引發異常。
2. 當 MediaRecorder.AudioSource.VOICE_COMMUNICATION 和 MediaRecorder.AudioSource.MIC 在開始通話之前和斷開通話后被給予麥克風輸入時。

所以看起來我們甚至從無障礙服務中也沒有從呼叫中獲得任何流。 我在新更新到 android 10 的像素 3A xl 設備上嘗試了這個。

所以在讀完這篇文章后,在我失敗的審判之后,我有以下問題......

  1. android 10 的這種新行為到底意味着什么。 無障礙服務與此有何相關性? 我嘗試過但已經失敗了?
  2. 我在配置無障礙服務時做錯了什么嗎?
  3. 如果這種方法不能解決通話錄音問題,那么 android 10 是否也缺少通話錄音功能? 或者有沒有其他方法可以在 android 10 中做到這一點。因為我只對 android 10 中的通話錄音感興趣。

簡而言之,我只想知道 android 10 是否恢復了語音通話錄音...

首先感謝您的代碼。 我嘗試使用相同的代碼,並且使用了MediaRecorder.AudioSource.VOICE_RECOGNITION並且我在三星 S10、一加 7 和 Real Me 中獲得了雙方的通話錄音。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM