導航:首頁 > 操作系統 > androidvoicecall

androidvoicecall

發布時間:2023-01-20 13:25:17

android 實現靜音的幾種技術

//關閉揚聲器
public void CloseSpeaker() {
try {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
if(audioManager != null) {
if(audioManager.isSpeakerphoneOn()) {
audioManager.setSpeakerphoneOn(false);
audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,currVolume,
AudioManager.STREAM_VOICE_CALL);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

㈡ 安卓手機通話怎麼錄音

若是使用vivo手機,撥打電話時,點擊通話界面的「錄音」即可錄制通話內容。

一、設置通話自動錄音的方法:

1、進入i管家--實用工具--輔助功能--通話錄音--選擇「所有通話自動錄音」或「指定」號碼自動錄音;

2、設置--(應用與許可權--系統應用設置)--電話--通話錄音--選擇「所有通話自動錄音」或「指定號碼自動錄音」,設置後,當開始通話時,手機會自動進行錄音。

㈢ Android 怎麼判斷設備是否靜音

靜音就是音量為0了, 用AudioManager來取當前的音量,判斷是否為0即可。
但是Android系統的音量有很多種:STREAM_VOICE_CALL、STREAM_SYSTEM、STREAM_RING、STREAM_MUSIC、STREAM_ALARM

㈣ android怎麼調用系統聲音

Android中手機聲音調節步驟:

a、通過系統服務獲得聲音管理器:

AudioManager audioManager = (AudioManager)getSystemService(Service.AUDIO_SERVICE);

b、根據實際需要調用適當的方法:(常用方法)

audioManager.adjustStreamVolume(int streamType, int direction, int flags);

streamType:聲音類型,可取的為STREAM_VOICE_CALL(打電話時的聲音), STREAM_SYSTEM(Android系統聲音), STREAM_RING(電話鈴響), STREAM_MUSIC(音樂聲音)or STREAM_ALARM(警告聲音)。

direction:調整音量的方向,可取為ADJUST_LOWER(調低音量), ADJUST_RAISE(調高音量), or ADJUST_SAME(保持先前音量)。

flags:可選標志位(如要顯示出音量調節UI,使用如下flag:AudioManager.FLAG_SHOW_UI)。

audioManager.setStreamMute(int streamType, boolean state);設置指定聲音類型(streamType)是否為靜音。如果state為true,則設置為靜音;否則,不設置為靜音。

audioManager.setRingerMode(int ringerMode);

設置鈴音模式,可取值為RINGER_MODE_NORMAL(鈴音正常模式), RINGER_MODE_SILENT(鈴音靜音模式), or RINGER_MODE_VIBRATE(鈴音震動模式,即鈴音為靜音,啟動震動)。

audioManager.setMode(int mode);

設置聲音模式,可取值為MODE_NORMAL(正常模式,即在沒有鈴音與電話的情況), MODE_RINGTONE(鈴響模式), MODE_IN_CALL(接通電話模式)or MODE_IN_COMMUNICATION(通話模式)。

注意:聲音的調節是沒有許可權要求的。

㈤ 關於Android的MediaRecorder.AudioSource設置成VOICE_CALL為什麼錄不到聲音

法律 問題 ,導致 不少 手機 禁止 了 VOICE_CALL

㈥ Android音頻播放

最近需要在Android的客戶端中使用PCM聲音播放和錄制,簡單學習了一下。有不正確的地方還請指出。

首先有幾個概念需要了解一下:采樣頻率、聲道數、采樣位數。

采樣頻率一般是sample rate, 代表的是數字化音頻時每秒采樣的次數。常見的有44.1KHz(CD品質)、48KHz等。

這個很好理解,單聲道Mono就是聲音從一個方向傳出來;雙聲道Stereo也叫立體聲,聲音是從兩個方向傳來。通常的流行音樂中,仔細聽能發現每個聲道可能側重不同的樂曲聲部,比如左聲道吉他,右聲道鋼琴,人聲似乎兩個聲道都有,聽起來就像站在中間一樣。(這里沒有考證,隨便舉例)

每一個采樣都是一個數據點,采樣位數是指這個數據點使用了幾位來記錄。AudioTrack類只支持8位和16位的PCM音頻。8位就是2的8次方,即256個值;而16位則是2的16次方,有65536個值。

這個在音頻的編解碼中還是比較常用的。在PCM格式中,1秒鍾音頻的數據大小是SampleRate×Channel×Bit/8,單位是byte位元組。由於PCM本身沒有音頻幀的概念,所以通過這個公式就能計算出任意時長音頻的大小,或者得到任意大小音頻的時長。如果規定1個音頻幀是「每個聲道256個采樣」,雙聲道下就是512個采樣,那麼1幀的數據量就是256×Channel×Bit/8,同理可以推斷出1秒鍾有多少音頻幀等等。音頻幀的概念在各種編解碼中各有不同,但計算公式大同小異,這里不展開。

Android中音頻的播放使用的是AudioTrack類,具體用法非常簡單。
首先設置buffer大小。AudioTrack播放時需要先寫入buffer,如果這個buffer沒有寫滿,那麼這部分是不會播放的。所以buffer不能設置太小,這樣會導致播放不連貫;而buffer也不能設置太小,這樣不間斷寫入會消耗許多CPU資源。AudioTrack自帶了getMinBufferSize方法可以給出一個最小buffer,一般用這個值就可以。getMinBufferSize方法三個參數分別是sample rate、channel和bit。

設置完buffer size就可以實例化一個AudioTrack。其中第一個參數streamType是指不同的音頻流類型,包括STREAM_MUSIC、STREAM_ALARM、STREAM_VOICE_CALL、STREAM_RING等,是Android對不同音頻的分類。中間三個參數很好理解,第四個是buffer size,剛剛計算出來了。最後一個參數mode有兩種:MODE_STREAM和MODE_STATIC。前者是以流形式播放,後者則是一次性全部寫入然後播放。

調用實例的play()方法就可以開始播放了。不過播放得要有數據吧?要填寫數據就要用到write()方法。write方法中第一個參數是一個byte[]類型,是要寫入的數據源,可以是從文件流中讀取出來的;第二個參數offset是初始位移,即從source的哪個位置開始;第三個參數則是輸入長度。

當write方法寫滿一個AudioTrack的buffer時,就會有聲音播放出來了。
當播放完成後記得要把AudioTrack停止並釋放。

㈦ Android中如何實現通話內錄

在通話是直接按(真實按鍵不是屏幕里的)最左邊的鍵,就可以看到錄音了

㈧ android 5.0怎麼設置音樂從聽筒播放

5.0 之前 可以用AudioManager.setMode來設置phone state 來達到切換聽筒的目的,但是5.0之後非系統應用沒有這個許可權了。發現微信依然可以切換,研究了下底層設備切換發現是如下操作的:
1.播放音頻流類型要設置為AudioManager.STREAM_VOICE_CALL
2.在播放前調用AudioSystem.setForceUse(AudioSystem.FOR_COMMUNICATION,AudioSystem.FORCE_NONE);
這個調用需要 在AndroidManifest.xml中添加 android.permission.MODIFY_AUDIO_SETTINGS 許可權
並且AudioSystem這個類是隱藏類,在Android 公開API中沒有,所以需要用反射調用,或者自己編譯出一個framework.jar包,放到工程里,不過這樣有可能兼容性不是很好。

㈨ android5.1設置所有音量通道為媒體音量

如進入一個頁面希望設置媒體音量為最大:代碼如下:

//獲取最大媒體音量值

int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

//設置媒體音量為最大值,當然也可以設置媒體音量為其他給定的值

mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, max,0);

java代碼:

AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

//通話音量

int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );

int current = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL );

Log.d(「VIOCE_CALL」, 「max : 」 + max + 」 current : 」 + current);

//系統音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM );

current = mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM );

Log.d(「SYSTEM」, 「max : 」 + max + 」 current : 」 + current);

//鈴聲音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING );

current = mAudioManager.getStreamVolume( AudioManager.STREAM_RING );

Log.d(「RING」, 「max : 」 + max + 」 current : 」 + current);

//音樂音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );

current = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );

Log.d(「MUSIC」, 「max : 」 + max + 」 current : 」 + current);

//提示聲音音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM );

current = mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM );

Log.d(「ALARM」, 「max : 」 + max + 」 current : 」 + current);

ps:

游戲過程中只允許調整多媒體音量,而不允許調整通話音量。

setVolumeControlStream(AudioManager.STREAM_MUSIC);

長時間不動,不允許黑屏,View.setKeepScreenOn(true);

估計manifest文件中需要注冊許可權吧

調節媒體音量

AudioManager audio = (AudioManager) getSystemService(Service.AUDIO_SERVICE);

//參數三AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI表示在調整媒體音量的時候會發出聲音,並且彈出音量調整對話框

//如果不想要這些,可以設置為0

mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,

AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND

| AudioManager.FLAG_SHOW_UI);

重寫 Activity 的 onKeyDown 方法

@Override

public

boolean

onKeyDown(

int

keyCode, KeyEvent event) {

switch

(keyCode) {

case

KeyEvent.KEYCODE_VOLUME_UP:

audio.adjustStreamVolume(

AudioManager.STREAM_MUSIC,

AudioManager.ADJUST_RAISE,

AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);

return

true

;

case

KeyEvent.KEYCODE_VOLUME_DOWN:

audio.adjustStreamVolume(

AudioManager.STREAM_MUSIC,

AudioManager.ADJUST_LOWER,

AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);

return

true

;

default

:

break

;

}

return

super

.onKeyDown(keyCode, event);

}

㈩ android聲音通道怎麼理解

由於使用的是耳機 麥克分離式的耳機,所以要分別上報事件。在Android系統層耳機插孔的檢測是基於/sys/class/switch/h2w/state的值來判斷的(以4.4.4_r2為例子位於WiredAccessoryManager.java)。

只要在內核中實現一個「或真或假」的基於switch類的h2w開關。Android系統就可以監聽到插拔信息。
在播放音樂的時候插入耳機,使用tinymix(參考:Android音頻底層調試-基於tinyalsa)命令可以查找到Playback Path的值從SPK變為HP_NO_MIC,就可以說明耳機插拔軟體檢測正常了。

# tinymix
Mixer name: 'RK_RK616_TINY'
Number of controls: 7
ctl type num name value
0 ENUM 1 Playback Path HP_NO_MIC
1 ENUM 1 Capture MIC Path MIC OFF
2 ENUM 1 Voice Call Path OFF
3 ENUM 1 Voip Path OFF
4 INT 2 Speaker Playback Volume 24 24
5 INT 2 Headphone Playback Volume 24 24
6 ENUM 1 Modem Input Enable ON

閱讀全文

與androidvoicecall相關的資料

熱點內容
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19
金斗雲伺服器 瀏覽:447
港口工程pdf 瀏覽:770