1. 程式人生 > >Android Audio控制和MediaButton遠端控制(音視訊控制配合)

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 */ private
static 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)) { KeyEvent
event = (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 ManagerAVD 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中windowwindowManager原始碼分析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中ActivityService簡單互動通過廣播機制

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開發工具中 原生的功能,須要下載