android 按鍵聲音
http://www.360doc.com/content/13/1217/19/1698092_337948357.shtml
1.Android的audio流的型別有以下12種:
- /* The audio stream for phone calls */
- publicstaticfinalint STREAM_VOICE_CALL = 0;//通話連線時的音訊流(通話聲)
- /* The audio stream for system sounds */
- publicstaticfinalint STREAM_SYSTEM = 1;//系統音訊流
-
/* The audio stream for the phone ring and message alerts */
- publicstaticfinalint STREAM_RING = 2;//來電鈴聲
- /* The audio stream for music playback */
- publicstaticfinalint STREAM_MUSIC = 3;//媒體音訊流
- /* The audio stream for alarms */
- publicstaticfinalint STREAM_ALARM = 4;//鬧鐘音訊流
- /* The audio stream for notifications */
-
publicstaticfinalint STREAM_NOTIFICATION =
- /* @hide The audio stream for phone calls when connected on bluetooth */
- publicstaticfinalint STREAM_BLUETOOTH_SCO = 6;//從註釋上看時使用藍芽耳機通話的音訊流
- /* @hide The audio stream for enforced system sounds in certain countries (e.g camera in Japan) */
-
publicstaticfinalint STREAM_SYSTEM_ENFORCED =
- /* @hide The audio stream for DTMF tones */
- publicstaticfinalint STREAM_DTMF = 8;//DTMF音訊流
- /* @hide The audio stream for text to speech (TTS) */
- publicstaticfinalint STREAM_TTS = 9;//TTS: Text to Speech:檔案到語言的音訊流,即機器說話
- /* @hide The audio stream for Fm */
- publicstaticfinalint STREAM_FM = 10;//FM的音訊流
- /* @hide The audio stream for MATV */
- publicstaticfinalint STREAM_MATV = 11;//TV的音訊流
每種音訊流所規定的最大值:
- /** @hide Maximum volume index values for audio streams */
- privateint[] MAX_STREAM_VOLUME = newint[] {
- 6, // STREAM_VOICE_CALL
- 7, // STREAM_SYSTEM
- 7, // STREAM_RING
- 12, // STREAM_MUSIC
- 7, // STREAM_ALARM
- 7, // STREAM_NOTIFICATION
- 15, // STREAM_BLUETOOTH_SCO
- 7, // STREAM_SYSTEM_ENFORCED
- 15, // STREAM_DTMF
- 15, // STREAM_TTS
- 13, //STREAM_FM
- 13//stream_MATV
- };
2.所有的按鍵事件都是touch事件,這部分我會另外開篇博文介紹。
開始本文正文,Anndroid系統中所有View帶有按鍵音,使用者可以通過Settings>Sound>勾選Audible Selection即可開啟按鍵音。但是有個奇怪的地方:此按鍵音是與媒體音量(即STREAM_MUSIC)繫結的,難道按鍵音的STREAM TYPE就是STREAM_MUSIC嗎?我們從程式碼中尋找一下。
首先所有的View點選的時候都有按鍵音,我們從View.java的點選事件找起,在view的響應的onTouchEvent()方法中有如下程式碼:
- switch (event.getAction()) {
- case MotionEvent.ACTION_UP:
- boolean prepressed = (mPrivateFlags & PREPRESSED) != 0;
- if ((mPrivateFlags & PRESSED) != 0 || prepressed) {
- // take focus if we don't have it already and we should in
- // touch mode.
- boolean focusTaken = false;
- if (isFocusable() && isFocusableInTouchMode() && !isFocused()) {
- focusTaken = requestFocus();
- }
- if (!mHasPerformedLongPress) {
- // This is a tap, so remove the longpress check
- removeLongPressCallback();
- // Only perform take click actions if we were in the pressed state
- if (!focusTaken) {
- // Use a Runnable and post this rather than calling
- // performClick directly. This lets other visual state
- // of the view update before click actions start.
- if (mPerformClick == null) {
- mPerformClick = new PerformClick();
- }
- if (!post(mPerformClick)) {
- performClick();//這裡響應click事件
- }
- }
- }
- if (mUnsetPressedState == null) {
- mUnsetPressedState = new UnsetPressedState();
- }
- if (prepressed) {
- mPrivateFlags |= PRESSED;
- refreshDrawableState();
- postDelayed(mUnsetPressedState,
- ViewConfiguration.getPressedStateDuration());
- } elseif (!post(mUnsetPressedState)) {
- // If the post failed, unpress right now
- mUnsetPressedState.run();
- }
- removeTapCallback();
- }
- break;
- publicboolean performClick() {
- sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
-
相關推薦
android 按鍵聲音
http://www.360doc.com/content/13/1217/19/1698092_337948357.shtml 1.Android的audio流的型別有以下12種: /* The audio stream for phone
Android 按鍵按下實現陰影效果
nal turn view font .cn ges activity rda als final Button btn_gallery=(Button)findViewById(R.id.btn_gallery);btn_gallery.setOnClickListene
android調節聲音大小
狀態 不變 android 背景 sound tab ext 鈴聲 comment android調節聲音大小 1.背景音樂的一些知識 網上好多關於背景音樂添加用到的類: MediaPlayer,SoundPool,AudioManager的資料,可是有時候解決不了我們
Android Studio 第七十一期 - Android 系統聲音控制
圖片 geek cati hit ces ont sys http hub 代碼已經整理好,效果如下圖: 地址:https://github.com/geeklx/myapplication2018/tree/master/p014_systemvoi
Android關於聲音播放(MediaPlayer)--如何改變播放速率
喜歡折騰,最近想開發一款可以變速的音樂播放器,先做下技術調研。 百度&谷歌了一下,如果不做底層定製,整個mp3檔案播放在java層可以實現的方法主要是MediaPlayer。 而且,在Android 6.0+(23+)MediaPlayer可以通過setSpeed來改變播放速率
appium控制Android按鍵
按鍵的keycode,如下: KEYCODE_HOME Home鍵 3 KEYCODE_BACK 返回鍵 4 KEYCODE_CALL 撥號鍵 5 KEYCODE_ENDCALL 掛機鍵 6 KEYCODE_VOLUME_UP 音量增加鍵
Android 按鍵訊息處理
Android按鍵訊息處理 在android系統中,鍵盤按鍵事件是由SystemServer服務來管理的;然後在以訊息的形式分發給應用程式處理。產生鍵盤按鍵事件則是有Linux kernel的相關驅動來實現。 鍵盤訊息有別於其他型別的訊息;需要從Linux kernel drivers產生由上層ap
Android按鍵事件傳遞流程(一)
做Android開發的少不了對觸控、按鍵事件進行處理,對於手機來說,主要是手勢移動、觸控按下等,而TV主要通過遙控器、按鍵操作,按鍵事件不同於觸控事件,必須先獲得焦點,然後才能移動、選擇。 Android輸入裝置支援滑鼠、鍵盤(按鍵)、觸控式螢幕(單點、多點)、
Android按鍵訊息處理
Android按鍵訊息處理 在android系統中,鍵盤按鍵事件是由SystemServer服務來管理的;然後在以訊息的形式分發給應用程式處理。產生鍵盤按鍵事件則是有Linux
Android 按鍵長按與短按識別
在Android中已經有了長按與短按的識別,只是長按識別的時間比較短 ,大概在1s以上就認為是長按了。主要的思路是設定一個標誌位,利用事件相應次數函式event.getRepeatCount()來設定標誌位。主要用的函式是按鍵響應的三個函式 onKeyLongPress,o
Android按鍵事件傳遞流程
做Android開發的少不了對觸控、按鍵事件進行處理,對於手機來說,主要是手勢移動、觸控按下等,而TV主要通過遙控器、按鍵操作,按鍵事件不同於觸控事件,必須先獲得焦點,然後才能移動、選擇。 android輸入裝置支援滑鼠、鍵盤(按鍵)、觸控式螢幕(單點、多點)、
Android 中聲音的處理一:MediaPlayer
在android中有時候會要加一些背景音樂,或者在遊戲中需要新增一些遊戲音效。最近的工作中正好要遇到這方面的問題,就瞭解了下,現在把使用到的知識,做一下總結。 MediaPlayer使用起來簡單,適合做長時間的聲音播放,比如背景音樂。 下面是使用過程中的主要點:【注
Android按鍵事件處理流程
剛接觸Android開發的時候,對touch、key事件的處理總是一知半解,一會是Activity裡的方法,一會是各種View 中的,自己始終不清楚到底哪個在先哪個在後,總之對整個處理流程沒能很好的把握。每次寫這部分程式碼的時候都有些心虛, 因為我不是很清楚什麼時候、
【轉載兩篇關於android按鍵事件傳遞的文章,流程非常完整】Android按鍵事件傳遞流程(二)
5 應用層如何從Framework層接收按鍵事件 由3.2和4.5.4節可知,當InputDispatcher通過服務端管道向socket檔案描述符傳送訊息後,epoll機制監聽到了I/O事件,epoll_wait就會執行返回發生事件的個數給eve
Android按鍵訊息傳播流程(WindowManagerService.java)
主要涉及的檔案有: WindowManagerService.java frameworks\base\services\java\com\android\server\ PhoneWindow.java frameworks\p
android按鍵長按短按功能的實現策略
定時器輪休的方式,根據取樣次數來區分長按還是短按 1.當按下鍵1的時候,就不斷的計數,直到你放手電壓值變化,再根據計數的次數判斷上報長按還是短按的功能 沒有按鍵的時候取樣率為HZ/4,取樣是HZ/40 static void lradc1_data_function(u
Android按鍵音(焦點)
一、兩處呼叫playSoundEffect: 其一:繼承ViewGroup類的子類內部View切換;例如ViewPager frameworks/support/v4/java/android/support/v4/view/ViewPager.java public bo
Android 按鍵防止過快點選(防抖),在ButterKnife中的簡單解決方案。
其實自己也在網上找了一些防抖的方案,比如RxBinding啊,NoDoubleClickListener啊,原始解決方案啊等等,不過那都不是我想要的。 因為專案中使用了ButterKnife繫結控制元件和為控制元件註冊點選事件。所以上面搜到的那些方案都不太好使
android 按鍵對映qwerty.kl檔案中的WAKE和WAKE_DROPPED的定義
android系統中,獲取到鍵盤的鍵值後,會搜尋/system/usr/keylayout/gpio-keys.kl這個檔案 key 115 VOLUME_UP WAKE_DROPPED key 114 VOLUME_DOWN WAK
Android按鍵事件——上層與驅動的對映
原創:M_r_D 轉載請註明出處! 首先檢視android對上層按鍵事件的定義,在標頭檔案<KeycodeLabels.h>中: static const KeycodeLabel KEYCODES[] = { { "SOFT_LEFT", 1