Android Audio控制和MediaButton遠端控制(音視訊控制配合)
public class RemoteControlClientReceiver extends BroadcastReceiver { @SuppressWarnings("unused") private static final String TAG = "mythou_ACTION_MEDIA_BUTTON"; /* * It should be safe to use static variables here once registered via the * AudioManager */ privatestatic long mHeadsetDownTime = 0; private static long mHeadsetUpTime = 0; @Override public void onReceive(Context context, Intent intent) {
//獲取對應Acton,判斷是否是需要的ACTION_MEDIA_BUTTON String action = intent.getAction();if (action.equalsIgnoreCase(Intent.ACTION_MEDIA_BUTTON)) { KeyEventevent = (KeyEvent) intent .getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event == null) return; if (event.getKeyCode() != KeyEvent.KEYCODE_HEADSETHOOK && event.getKeyCode() != KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE&& event.getAction() != KeyEvent.ACTION_DOWN) return; Intent i = null; switch (event.getKeyCode()) { /* * one click => play/pause long click => previous double click => * next */
//這裡根據按下的時間和操作,分離出具體的控制 case KeyEvent.KEYCODE_HEADSETHOOK: case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: long time = SystemClock.uptimeMillis(); switch (event.getAction()) { case KeyEvent.ACTION_DOWN: if (event.getRepeatCount() > 0) break; mHeadsetDownTime = time; break; case KeyEvent.ACTION_UP: // long click if (time - mHeadsetDownTime >= 1000) { i = new Intent(AudioService.ACTION_REMOTE_BACKWARD); time = 0; // double click } else if (time - mHeadsetUpTime <= 500) { i = new Intent(AudioService.ACTION_REMOTE_FORWARD); } // one click else { if (mLibVLC.isPlaying()) i = new Intent(AudioService.ACTION_REMOTE_PAUSE); else i = new Intent(AudioService.ACTION_REMOTE_PLAY); } mHeadsetUpTime = time; break; } break;
//下面是常規的播放、暫停、停止、上下曲 case KeyEvent.KEYCODE_MEDIA_PLAY: i = new Intent(AudioService.ACTION_REMOTE_PLAY); break; case KeyEvent.KEYCODE_MEDIA_PAUSE: i = new Intent(AudioService.ACTION_REMOTE_PAUSE); break; case KeyEvent.KEYCODE_MEDIA_STOP: i = new Intent(AudioService.ACTION_REMOTE_STOP); break; case KeyEvent.KEYCODE_MEDIA_NEXT: i = new Intent(AudioService.ACTION_REMOTE_FORWARD); break; case KeyEvent.KEYCODE_MEDIA_PREVIOUS: i = new Intent(AudioService.ACTION_REMOTE_BACKWARD); break; } if (isOrderedBroadcast()) abortBroadcast(); if (i != null) context.sendBroadcast(i); } } }
相關推薦
Android Audio控制和MediaButton遠端控制(音視訊控制配合)
public class RemoteControlClientReceiver extends BroadcastReceiver { @SuppressWarnings("unused") private static final String TAG = "mythou
Android自定義控制元件--圓形進度條(中間有圖diao)
智慧家居越來越流行,在智慧家居中我們常要表現一些資料的百分比 圓形度條中間加個圖是一種非常流行的自定義View 1.第一步 你首先需要對類進行繼承View public class CircleProgressImageView extends View 2.第二步 要實
Android 基本控制元件的使用一(使用者的登入介面)
用到了三個基本控制元件分別是: TextView(文字框); EditText (輸入框); Button (按鈕); activity_main.xml 中的程式碼 <LinearLayoutxmlns:android="http://schemas.a
控制程序的啟動數量(限制遊戲多開)
strong err mod ucc pan 會有 sys ready 命令行 引言: 在PC端使用軟件的過程中。有時開發人員會有類似限制程序啟動數量的需求,如限制某程序在單一PC端的啟動數量。或是為了統計PC端啟動的程序數量等,顯然須要一種“計數器
Android SDK Manager和AVD Manager使用(win7_64bit下測試)
參數 osi 軟件開發 ostc 安裝包 下載 項目構建工具 sys android開發 http://www.cnblogs.com/kangjianwei101/p/5621238.html#m4 Android SDK Manager和AVD Man
Android SDK版本和API Level對照表(最新最全)
在開發時我們會經常用到相容api版本,難保可用把全部都記得住,這裡有最快捷實用的方法進行檢視:開啟Android Studio ,然後點選SDK Manneger ,參考下圖示例: 下面列出最
練習4: 程式的控制結構 (第4周)(三位水仙花數)
三位水仙花數 描述 "水仙花數"是指一個三位整數,其各位數字的3次方和等於該數本身。 例如:ABC是一個"3位
cocos2dx控制元件-----ListView的使用(label自動換行)
float totalHeight = 0;if (m_textInfoListView){m_textInfoListView->removeAllChildrenWithCleanup(true);}m_textInfoListView = nullptr;m_t
android開發 -- 檢視和陰影 詳解(Material Design)
Material Design包含了很多內容,大致把它分為四部分: 主題和佈局——ANDROID L——Material Design詳解(主題和佈局) 檢視和陰影——ANDROID L——Material Design詳解(檢視和陰影) UI控制元件——ANDROID
《自動控制原理》個人筆記(來自ppt課件)
控制的含義 控制(CONTROL)----某個主體使某個客體按照一定的目的動作。 主體–人:人工控制; 機器:自動控制 客體–指一件物體,一套裝置,一個物化過程,一個特定系統。 人工控制與自動控制 人在控制過程中起三個作用: (1)觀測:用眼睛去觀測,如溫度計、轉速錶等的指示值;
Mysql初始化root密碼和允許遠端訪問(Ⅱ)
1、初始化root密碼 進入mysql資料庫 1 mysql>update user set password=PASSWORD(‘123456’) where User='root'; 2、允許mysql遠端訪問,可以使用以下三種方式: a、改表。 1 2 3
arduino通過開關控制led燈程式碼理解(適合所有開關型別)
方法一 const int LED=13; //宣告變數 LED燈接在13針腳; const int BUTTON=7; //宣告變數,按鈕接在第7針腳; int val=0; //宣告變
spring控制資料庫讀寫分離(多資料來源動態切換)
問題描述: 專案一直是使用同一個資料庫進行讀和寫的操作,在寫操作時會鎖表,並且效率低,後期出現效能問題 原因描述: 專案只能操作一個數據源 需求描述: 配置多個數據源,利用切面進行動態切換 解決方案: 修改配置,並且增加切面進行自動控制 解決方式: 第一步:配置多個數據源
Android layer-list的屬性和使用詳解(陰影、邊框效果)
layer-list用於多個圖層堆疊,可以完成陰影效果 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/
android中window和windowManager原始碼分析(android-api-23)
一、前言 在android中window無處不在,如activity、dialog、toast等。它是view所依附的載體,每個window都對應於一個View和一個ViewRootImpl。ViewRootImpl就是Window和view的連線紐帶。windowMana
android學習筆記 按電源鍵螢幕喚醒和螢幕睡眠流程(從上層到kernel)
一. 螢幕的喚醒 首先inputread在讀取到有keyboard事件上報後,會呼叫到keydispatch的notifykey,去詢問wm是否會對這次按鍵特殊處理,如果WM不處理,則此處會點亮或者熄滅螢幕。 inputReader.cpp
Android中Activity和Service簡單互動(通過廣播機制)
package com.cwb; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; im
Qt編寫自定義控制元件37-發光按鈕(會呼吸的痛)
一、前言 這個控制元件是好早以前寫的,已經授權過好幾個人開源過此控制元件程式碼,比如紅磨坊小胖,此控制元件並不是來源於真實需求,而
Android開發之AudioManager(音頻管理器)具體解釋
應該 數量 service eth out 開發 要求 type 路由 AudioManager簡單介紹: AudioManager類提供了訪問音量和振鈴器mode控制。使用Context.getSystemService(Context.AUDIO_SERVICE)
Android Studio插件之sexy editor(設置AS背景)
roi spa develop ica all 透明度 eve blog andro 好多剛開始用Android Studio 的同學。看到這麽炫的效果,肯定自己很想嘗試設置一下,可是這個效果不是android Studio開發工具中 原生的功能,須要下載