主题 : HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API 呢 ? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 37502
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-02-11
最后登录: 2011-09-06
楼主  发表于: 2011-05-10 10:47

 HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API 呢 ?

Greeting
   我在 Android 上要做出 HFP Unit (android 只有 Audio Gatway)  ,現在已經快要完成了,目前已經可以建立 SLC 的連線。SLC 連線建立之後,接下來就是 SCO 的連線了,在 apps/phone 中的 Hasdsfree 程式碼使用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API,但是都是 hide 的。我試過使用反射機制要來使用這些 hide class/api ,但是都不能成功。不知道是否有人有這方面的經驗呢?還請賜教。

謝謝
级别: 新手上路
UID: 37502
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-02-11
最后登录: 2011-09-06
1楼  发表于: 2011-05-10 13:15

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

算了~真難搞。我將 hide 取消,重新編譯 SDK 來試試看好了....
级别: 新手上路
UID: 37502
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-02-11
最后登录: 2011-09-06
2楼  发表于: 2011-05-13 12:09

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

我現在 SCO 通道可以建立成功了,我去觀察 HCI,真的有 HCI 送來的 SCO 語音資料。但是還是會莫名其妙的斷線,現在還在查原因。另外也在想辦法將 HCI 的資料送到 Audio Manager 來播出
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
3楼  发表于: 2011-05-13 12:54

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

支持一下
不知道要不要修改asound.conf 这个配置文件
级别: 新手上路
UID: 37502
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-02-11
最后登录: 2011-09-06
4楼  发表于: 2011-05-14 19:56

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

我沒有去改 asound.conf 。我現在已經不會斷線了。可以持續的收到 SCO  資料。當初會斷線的原因是因為,我建立 SCO  之後,在調用 AudioManager 中的 SetBluetoth(on) ... 等 function .  這樣是有問題的。

雖然在android 自己的 handsfree java 中有使用,但是....他是 Audio Gateway . 而且。本身 phone.java 根本沒有啟動(執行)。所以直接調用 Audio manager ,通知 Audio Manager  說現在有 SCO 資料,我想是有問題的。可能是其中很多狀態的檢查非常嚴謹。所以我的 SCO 又被切斷了。

PS: 我調用 Sco 都是偷用的。因為 ScoSocket 是 hide class ,我將 hide 去掉。重新 build SDK 的

沒關係。現在既然我在 6410 上,使用 hcidump 可已收到 sco 的資料,每一個封包是 48  個 Byte . 這些都是 raw data (PCM) ,那就好辦了。想辦法送到 media play  去將語音播放出來就好
级别: 新手上路
UID: 37502
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-02-11
最后登录: 2011-09-06
5楼  发表于: 2011-05-16 23:33

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

要收  hci 資料沒有想像中簡單。雖然在 Android 中有 hcidump 程式。但是那是 C 的程式,要改成 JNI 的形式,去開啟 hci socket , bind 這個 sock .  然後分析 bluetooth package , 只要將 hci 的封包送出,讓上層的 java 可以透過 jni , 從這個 C 程式中取得我要的 PCM raw data . 。

目前我正在參考  hcidump.c 這個程式,來作自己的 native C 的 lib
级别: 新手上路
UID: 77334
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2012-09-06
最后登录: 2012-09-13
6楼  发表于: 2012-09-06 17:16

 Re:HFP Unit 已經快要完成了,但是要如何調用 ScoSocket 這個 Class , 還有 createScoSocket 這個 API ..

赞一个楼主,我也正在搞android蓝牙开发,所以想请问一下楼主怎么建立 SLC 的連線