Re: [問題] 透過藍牙傳送資訊(導航,樂曲,來電控

作者: amoumou (amoumou)   2015-02-09 12:06:13
※ 引述《MrJerome (飄揚)》之銘言:
: : (以下簡稱手機App為A端,我們的產品為B端且所有通訊皆透過藍牙):
: : 1.A端同時以藍牙連接B端以及藍牙耳機(接聽電話用)
: 藍芽可以[同時]連線多台設備?
: 我印象中是不行
: 除非可以接受[分開連接]
: ex:平常是連B設備, 但是一收到電話, 就斷開B連接, 改連耳機
: : 2.A端可以傳送來電資訊給B端,包含電話號碼,來電人,接聽狀態等資訊。
: 可以做到
: : 3.B端可以用按鈕來接聽電話。動作流程描述如下:
: : 當A收到來電,B顯示來電資訊,在B上按下接聽按鈕,
: : A接聽電話並透過藍牙耳機通話。
: : 換句話說就是要用B接電話,並且可以透過藍牙耳機通話。
: 這等同是要透過藍芽傳遞聲音, 並要能夠由手機端可以傳遞聲音至對方
: 這點我就不是很確定了
: 至少有兩個因素要克服
: 1. 藍芽如何傳遞聲音? (這應該可以辦到, 畢竟都有藍芽耳機了)
: 2. 收到的聲音要如何透過電話傳遞給對方 (這點我就不清楚了)
感謝各位關心這個問題並回應提供方向,目前我已能將音樂資訊,
來電資訊從手機透過藍牙送出。真的很感謝各位的熱心!
來電資訊:
具體的做法是利用BluetoothChat這個範例來改,在MainActivity
加入PhoneStateListener來監聽電話狀態,當狀態改變時可以
知道IDLE,OFFHOOK,RINGING三種狀態以及電話號碼,當
RINGING的時候,我就透過BluetoothChatFragment當中的sendMessage()
將資訊送出。
音樂資訊:
同樣是在MainActivity中,我使用BroadcastReceiver接收廣播
以及IntentFilter來過濾各廠牌音樂APP的廣播。這樣在
在onReceive事件中便可得到artist, album, track,以及isplaying
的資訊並用sendMessage()送出。
我目前最大的問題是:
當我的APP從B端收到"接聽電話"指令的時候,
我的APP要如何讓系統接這個電話?
流程大概是這樣的:
(我的APP已經在背景執行中,手機的藍牙連接了藍牙耳機以及B端)
1.有來電,手機跳到來電的畫面
2.來電資訊由我的APP透過藍牙發送出去給B端
3.B端顯示來電資訊並傳送"接聽電話"字串命令給APP
4.APP收到字串,使手機接聽電話(接通後是使用藍牙耳機來通話)。
卡在最後一步,目前我找不到方法可以讓我的APP直接下令接聽電話...
另外導航資訊的部分,我想我是沒時間自己將導航功能寫出,
因此朝向尋找現成的方案,希望能像音樂資訊那樣接收資料然後送出。
我預想是當Google導航(或其他導航軟體)
預報"前方300公尺請右轉"的資訊時,
我的APP也能收到這個訊息並將它傳送出去給B端。
但我找了幾天找不到Google地圖導航有提供Broadcast之類的訊息出來,
我利用maps, intent, broadcast, directions, turn by turn等關鍵字去搜尋
但是找不到需要的資訊,可能是我漏看或是方向錯誤,目前也持續在找...
在這方面有經驗的前輩若能不吝指教,我在這邊先行道謝了!
作者: amoumou (amoumou)   2015-02-16 10:32:00
導航訊息後來我用NotificationListener解決了,但是必須要4.3以上

Links booklink

Contact Us: admin [ a t ] ucptt.com