Bluetoothを用いた端末間通信

2,371 views
Skip to first unread message

J.I

unread,
Dec 12, 2010, 7:59:02 AM12/12/10
to Android-SDK-Japan
はじめまして.

Bluetoothを用いて端末間通信を行おうとしているのですが,上手くいきません.

<研究環境>
WindowsXP
Eclipse 3.6 Helios + Pleiades All in One
Android SDK
Java SE Development Kit 6u22 for windows

<使用端末>
TOSHIBAのdynabookAZを2台を使っています.
AndroidOSは2.1で,Bluetooth(R) ワイヤレステクノロジーVer.2.1+EDR準拠です.

(dynabookAZの公式HP)
http://dynabook.com/pc/catalog/cloud/100621az/index_j.htm

<プログラム>
プログラムは自作では無く,サンプルコードを使っています.

https://sites.google.com/a/techdoctranslator.com/jp/resources/samples/samples-index/bluetoothchat-index
に掲載されているサンプルコードと

http://www.socym.co.jp/book/4883377075.html
の本のサンプルプログラムのBluetoothExというプロジェクトを使用しています.

<状況>
上記の二つのサンプルコードをそのまま実行してみるのですが,端末同士で接続してくれません.

<おかしい所>
プログラムをデバックしてlogcatで色々見てて気付いたのですが,
下のコードのconnect()が失敗して,connectionFailed()が実行されているみたいです.
その際,logcatには以下のようなメッセージが吐き出されています.

タグ              メッセージ
BluetoothSocket.cpp   UNIMPLEMENTED NATIVE - discoverServicesNative

BluetoothChatService.javaの一部

public void run() {
Log.i(TAG, "BEGIN mConnectThread");
setName("ConnectThread");

// Always cancel discovery because it will slow down a
connection
mAdapter.cancelDiscovery();

// Make a connection to the BluetoothSocket
try {
// This is a blocking call and will only return on a
// successful connection or an exception
mmSocket.connect();
} catch (IOException e) {
connectionFailed();
// Close the socket
try {
mmSocket.close();
} catch (IOException e2) {
Log.e(TAG, "unable to close() socket during
connection failure", e2);
}
// Start the service over to restart listening mode
BluetoothChatService.this.start();
return;
}

// Reset the ConnectThread because we're done
synchronized (BluetoothChatService.this) {
mConnectThread = null;
}

// Start the connected thread
connected(mmSocket, mmDevice);
}

<質問>
以上のような状況で手詰まっています.
以下に,お聞きしたい質問を列挙しますので,答えれる範囲でお答えください.

1,上記した2つのプログラムを実際に実行してみて動くかどうか.
# 出来れば,使用した端末名を教えてください.
2,dyabookAZでBluetoothによる端末間通信が行えるかどうか.
3,上記であげたエラーメッセージの意味がどういった意味なのか.

以上です.
上記の質問以外にも,何か気付いた点・不明点がありましたら,ご指摘下さい.

よろしくお願いします.
Message has been deleted
Message has been deleted

J.I

unread,
Dec 15, 2010, 4:31:13 AM12/15/10
to Android-SDK-Japan
返信ありがとうございます.

SDKSamplesのBluetoothChatも試してみましたが,上手くいきません.
今,環境を初期化して始めから設定してみてやろうと考えています.

スタックトレースというのは初めて聞いたのですが,logcatのログとは違うと理解して良いですか.
少し調べてから,載せれたら載せようと思います.

「デバイス検索APIが実装されていない」と言われてるのですが,
このAPIは端末に依存するのか,プログラム側に依存するのか分りますか?
javaでプログラムを書いてるのに,何故C++のファイルからエラーが出るのかが分かりません.
探してみても,どこにもそのようなファイルが有りませんし.

UUIDは色々なサイトで指摘があったので,変えてみたのですがダメでした.

とりあえず,以上です.
何か情報が有りましたら,連絡をお願いします.

On 12月14日, 午前9:41, I-BEAT 大田黒 <x10k...@gmail.com> wrote:
> 私も初めての参加となります。
> Bluetoothでバーコードリーダーやプリンタの制御を行っています。
>
> OS2.1であれば、素直にSDKSamplesのAndroid-7にあるBluetoothChatを確認されてはいかがでしょうか。
> XPERIA-OS2.1で実績があります。
> 記載されていますサンプルサイトや書籍のサンプルは実施したことがありません。
> また、OS2.0以降は正式にSPP対応していますが、それ以前は非公式なため注意が必要です。
> androidのBluetooth-APIは機種依存性が低いようなので、ほとんどの機器でソースを変更することなく動作すると思われます。
>
> > BluetoothSocket.cpp   UNIMPLEMENTED NATIVE - discoverServicesNative
>
> に関しては、nativeのエラーではないようです。スタックトレースを提示されるとコメントしやすくなります。
> 意味自体は、「デバイス検索APIが実装されていない」と言っているようです。
> デバイス検索フェーズでよくあるのはUUIDによる問題です。
> 独自のアプリ同士でUUIDをそろえる必要があり、CHATなどはこれに該当します。
> 接続先が一般的なSPP機器の場合は、特定のUUIDを指定する必要があります。(http://black.blogzine.jp参照)
>
> 以上、頑張ってください。
Message has been deleted

black

unread,
Dec 15, 2010, 7:39:53 PM12/15/10
to Android-SDK-Japan
スタックトレースは、javaで標準出力にネストした例外を全て出力するものです。
例外が発生した場合に、
Exception.printStackTrace();
で出力されます。
この出力は、logcatで取得できます。

エラーメッセージ自体は、述べられている通り「タグ:BluetoothSocket.cpp」なんてありえないですね。
開発もしくは実行環境が特殊な気はします。
しかし、logcatで見るとその前後にjavaの範囲で情報があると思われるのですが。

また、BluetoothChatでは、最初connecionを張りに行き、失敗したらlistenで接続待ちになるロジックだったと記憶していま
す。
そのため、connect()からconnectionFailed()を呼び出すのは正常です。その後にスレッドがstartして
listen(accept)モードになります。
添付されたソースを見る限り、logcatにメッセージは表示されるようですが、正常にlistenモードで動作していることはあり得ませんか。

参考になれば、何よりですが。

black

unread,
Dec 15, 2010, 8:54:16 PM12/15/10
to Android-SDK-Japan
logcatにcppのエラーが表示される事象がありました。
私の場合は、接続先からコネクションを切断した場合に
BluetoothEventLoop.cpp
から発生しました。
javaではこのエラーをキャッチして、IOExceptionをスローしてくれています。
この辺に問題があるとなると、VM実装の範囲となるためメーカー対応となってしまいます。
(しかし、メッセージ通りのDiscveryが実装されてないことはあり得ないと思われる)

やはり、cppのエラーは無視して良いものかと。
おそらくjavaでスローされている例外を正しく処理すれば問題ないと思われます。

J.I

unread,
Dec 17, 2010, 3:15:06 AM12/17/10
to Android-SDK-Japan
とりあえず,logcatに出てきている分だけ載せてみます.

<起動した時点>
12-17 17:04:39.599: DEBUG/AndroidRuntime(2353): >>>>>>>>>>>>>>
AndroidRuntime START <<<<<<<<<<<<<<
12-17 17:04:39.599: DEBUG/AndroidRuntime(2353): CheckJNI is OFF
12-17 17:04:39.599: DEBUG/dalvikvm(2353): creating instr width table
12-17 17:04:39.629: DEBUG/AndroidRuntime(2353): --- registering native
functions ---
12-17 17:04:39.689: DEBUG/ddm-heap(2353): Got feature list request
12-17 17:04:39.739: DEBUG/PackageParser(957): Scanning package: /data/
app/vmdl26015.tmp
12-17 17:04:39.739: INFO/PackageParser(957):
com.example.android.BluetoothChat: compat added
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_PHONE_STATE
12-17 17:04:39.749: INFO/PackageManager(957): Removing non-system
package:com.example.android.BluetoothChat
12-17 17:04:39.749: DEBUG/PackageManager(957): Removing package
com.example.android.BluetoothChat
12-17 17:04:39.749: DEBUG/PackageManager(957): Activities:
com.example.android.BluetoothChat.BluetoothChat
com.example.android.BluetoothChat.DeviceListActivity
12-17 17:04:39.769: DEBUG/PackageManager(957): Scanning package
com.example.android.BluetoothChat
12-17 17:04:39.769: INFO/PackageManager(957): /data/app/vmdl26015.tmp
changed; unpacking
12-17 17:04:39.779: DEBUG/installd(767): DexInv: --- BEGIN '/data/app/
vmdl26015.tmp' ---
12-17 17:04:39.789: DEBUG/dalvikvm(2359): creating instr width table
12-17 17:04:39.829: DEBUG/dalvikvm(2359): DexOpt: load 4ms, verify
29ms, opt 0ms
12-17 17:04:39.869: DEBUG/installd(767): DexInv: --- END '/data/app/
vmdl26015.tmp' (success) ---
12-17 17:04:39.869: DEBUG/PackageManager(957): Activities:
com.example.android.BluetoothChat.BluetoothChat
com.example.android.BluetoothChat.DeviceListActivity
12-17 17:04:39.879: DEBUG/ActivityManager(957): Uninstalling process
com.example.android.BluetoothChat
12-17 17:04:39.879: DEBUG/ActivityManager(957): Force removing process
ProcessRecord{4a2645d0 2335:com.example.android.BluetoothChat/10033}
(com.example.android.BluetoothChat/10033)
12-17 17:04:39.879: INFO/Process(957): Sending signal. PID: 2335 SIG:
9
12-17 17:04:39.879: ERROR/BluetoothService.cpp(957): UNIMPLEMENTED
NATIVE - removeServiceRecordNative
12-17 17:04:39.879: INFO/WindowManager(957): WIN DEATH:
Window{4a2058f8 com.example.android.BluetoothChat/
com.example.android.BluetoothChat.BluetoothChat paused=false}
12-17 17:04:39.879: DEBUG/ActivityManager(957): Received spurious
death notification for thread android.os.BinderProxy@4a2e2700
12-17 17:04:39.879: INFO/WindowManager(957): WIN DEATH:
Window{4a3177d8 com.example.android.BluetoothChat/
com.example.android.BluetoothChat.DeviceListActivity paused=false}
12-17 17:04:39.899: INFO/installd(767): move /data/dalvik-cache/
data@app@vmdl26...@classes.dex -> /data/dalvik-cache/
data@app@com.example.androi...@classes.dex
12-17 17:04:39.899: DEBUG/PackageManager(957): New package installed
in /data/app/com.example.android.BluetoothChat.apk
12-17 17:04:39.989: DEBUG/AndroidRuntime(2353): Shutting down VM
12-17 17:04:39.989: DEBUG/dalvikvm(2353): DestroyJavaVM waiting for
non-daemon threads to exit
12-17 17:04:39.999: DEBUG/dalvikvm(2353): DestroyJavaVM shutting VM
down
12-17 17:04:39.999: DEBUG/dalvikvm(2353): HeapWorker thread shutting
down
12-17 17:04:39.999: DEBUG/dalvikvm(2353): HeapWorker thread has shut
down
12-17 17:04:39.999: DEBUG/jdwp(2353): JDWP shutting down net...
12-17 17:04:39.999: DEBUG/jdwp(2353): Got wake-up signal, bailing out
of select
12-17 17:04:39.999: INFO/dalvikvm(2353): Debugger has detached; object
registry had 1 entries
12-17 17:04:39.999: DEBUG/dalvikvm(2353): VM cleaning up
12-17 17:04:39.999: DEBUG/dalvikvm(2353): LinearAlloc 0x0 used 681596
of 5242880 (13%)
12-17 17:04:40.009: DEBUG/dalvikvm(957): GC freed 16627 objects /
1003688 bytes in 72ms
12-17 17:04:40.009: DEBUG/ActivityManager(957): Uninstalling process
com.example.android.BluetoothChat
12-17 17:04:40.129: DEBUG/dalvikvm(957): GC freed 4438 objects /
229232 bytes in 78ms
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f0700e7
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f020031
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f020030
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f050000
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f060001
12-17 17:04:40.139: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f060000
12-17 17:04:40.139: DEBUG/BluetoothAvrcpService(957): mReceiver -
android.intent.action.PACKAGE_REMOVED - package name:
com.example.android.BluetoothChat - Current player id: 1
12-17 17:04:40.149: DEBUG/Searchables(957): Checking component
ComponentInfo{com.google.android.providers.enhancedgooglesearch/
com.google.android.providers.enhancedgooglesearch.Launcher}
12-17 17:04:40.149: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f0700e7
12-17 17:04:40.149: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f020031
12-17 17:04:40.159: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f020030
12-17 17:04:40.159: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f050000
12-17 17:04:40.159: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f060001
12-17 17:04:40.159: WARN/ResourceType(957): Resources don't contain
package for resource number 0x7f060000
12-17 17:04:40.159: DEBUG/BluetoothAvrcpService(957): mReceiver -
android.intent.action.PACKAGE_ADDED - package name:
com.example.android.BluetoothChat - Current player id: 1
12-17 17:04:40.179: DEBUG/Searchables(957): Checking component
ComponentInfo{com.google.android.providers.enhancedgooglesearch/
com.google.android.providers.enhancedgooglesearch.Launcher}
12-17 17:04:40.209: DEBUG/dalvikvm(1073): GC freed 1149 objects /
54024 bytes in 76ms
12-17 17:04:40.209: DEBUG/HomeLoaders(1073): application intent
received: android.intent.action.PACKAGE_REMOVED, replacing=true
12-17 17:04:40.209: DEBUG/HomeLoaders(1073): -->
package:com.example.android.BluetoothChat
12-17 17:04:40.209: DEBUG/HomeLoaders(1073): application intent
received: android.intent.action.PACKAGE_ADDED, replacing=true
12-17 17:04:40.209: DEBUG/HomeLoaders(1073): -->
package:com.example.android.BluetoothChat
12-17 17:04:40.209: DEBUG/HomeLoaders(1073): --> update package
com.example.android.BluetoothChat
12-17 17:04:40.309: DEBUG/dalvikvm(1073): GC freed 4627 objects /
290408 bytes in 71ms
12-17 17:04:40.369: DEBUG/AndroidRuntime(2364): >>>>>>>>>>>>>>
AndroidRuntime START <<<<<<<<<<<<<<
12-17 17:04:40.369: DEBUG/AndroidRuntime(2364): CheckJNI is OFF
12-17 17:04:40.369: DEBUG/dalvikvm(2364): creating instr width table
12-17 17:04:40.379: DEBUG/dalvikvm(1073): GC freed 930 objects / 59736
bytes in 60ms
12-17 17:04:40.439: DEBUG/AndroidRuntime(2364): --- registering native
functions ---
12-17 17:04:40.549: DEBUG/ddm-heap(2364): Got feature list request
12-17 17:04:40.639: INFO/ActivityManager(957): Starting activity:
Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10000000
cmp=com.example.android.BluetoothChat/.BluetoothChat }
12-17 17:04:40.649: DEBUG/AndroidRuntime(2364): Shutting down VM
12-17 17:04:40.649: DEBUG/dalvikvm(2364): DestroyJavaVM waiting for
non-daemon threads to exit
12-17 17:04:40.649: DEBUG/dalvikvm(2364): DestroyJavaVM shutting VM
down
12-17 17:04:40.649: DEBUG/dalvikvm(2364): HeapWorker thread shutting
down
12-17 17:04:40.649: DEBUG/dalvikvm(2364): HeapWorker thread has shut
down
12-17 17:04:40.649: DEBUG/jdwp(2364): JDWP shutting down net...
12-17 17:04:40.649: INFO/dalvikvm(2364): Debugger has detached; object
registry had 1 entries
12-17 17:04:40.649: DEBUG/dalvikvm(2364): VM cleaning up
12-17 17:04:40.659: ERROR/AndroidRuntime(2364): ERROR: thread attach
failed
12-17 17:04:40.669: DEBUG/dalvikvm(2364): LinearAlloc 0x0 used 697180
of 5242880 (13%)
12-17 17:04:40.709: INFO/ActivityManager(957): Start proc
com.example.android.BluetoothChat for activity
com.example.android.BluetoothChat/.BluetoothChat: pid=2369 uid=10033
gids={3001, 3002, 1015}
12-17 17:04:40.769: ERROR/BluetoothChat(2369): +++ ON CREATE +++
12-17 17:04:40.779: DEBUG/ddm-heap(2369): Got feature list request
12-17 17:04:40.789: ERROR/BluetoothChat(2369): ++ ON START ++
12-17 17:04:40.789: DEBUG/BluetoothChat(2369): setupChat()
12-17 17:04:40.789: DEBUG/BluetoothChatService(2369): MY_UUID =
00001101-0000-1000-8000-00805f9b34fb
12-17 17:04:40.789: ERROR/BluetoothChat(2369): + ON RESUME +
12-17 17:04:40.789: DEBUG/BluetoothChatService(2369): start
12-17 17:04:40.789: ERROR/BluetoothChatService(2369): hoge
12-17 17:04:40.789: DEBUG/BluetoothSocket.cpp(2369): initSocketNative
12-17 17:04:40.789: ERROR/BluetoothService.cpp(957): UNIMPLEMENTED
NATIVE - addRfcommServiceRecordNative
12-17 17:04:40.799: ERROR/BluetoothChatService(2369): tmp =
android.bluetooth.BluetoothServerSocket@4a03e1d8
12-17 17:04:40.799: DEBUG/BluetoothChatService(2369): setState() 0 ->
1
12-17 17:04:40.799: INFO/BluetoothChat(2369): MESSAGE_STATE_CHANGE: 1
12-17 17:04:40.809: DEBUG/BluetoothChatService(2369): BEGIN
mAcceptThreadThread[Thread-8,5,main]
12-17 17:04:40.809: DEBUG/BluetoothSocket.cpp(2369): acceptNative
12-17 17:04:40.819: WARN/KeyCharacterMap(2369): henry:makeKeyboardLed
begin, value=0
12-17 17:04:40.889: DEBUG/dalvikvm(1307): GC freed 2200 objects /
139032 bytes in 715ms

<connectしようとした時>
12-17 17:06:31.711: WARN/PowerManagerService(957): mDimDelay=-1 while
trying to dim
12-17 17:06:39.970: INFO/ActivityManager(957): Starting activity:
Intent { cmp=com.example.android.BluetoothChat/.DeviceListActivity }
12-17 17:06:40.000: ERROR/BluetoothChat(2369): - ON PAUSE -
12-17 17:06:40.010: WARN/InputManagerService(957): Window already
focused, ignoring focus gain of:
com.android.internal.view.IInputMethodClient$Stub$Proxy@4a09fd88
12-17 17:06:40.079: ERROR/FSIMEViewManager(1026): Unknown inputType
12-17 17:06:40.249: INFO/ActivityManager(957): Displayed activity
com.example.android.BluetoothChat/.DeviceListActivity: 242 ms (total
242 ms)
12-17 17:06:41.280: ERROR/FSIMEViewManager(1026): Unknown inputType
12-17 17:06:41.809: DEBUG/DeviceListActivity(2369): doDiscovery()
12-17 17:06:41.850: ERROR/FSIMEViewManager(1026): Unknown inputType
12-17 17:06:47.809: WARN/PowerManagerService(957): mDimDelay=-1 while
trying to dim
12-17 17:06:48.270: ERROR/BluetoothEventLoop.cpp(957): Synergy async
event, q = 4000, prim_base = 0520, event = 802d, len = 2
12-17 17:06:48.270: ERROR/BluetoothEventLoop.cpp(957): Synergy async
event, q = 4000, prim_base = 0520, event = 802f, len = 15
12-17 17:06:48.310: VERBOSE/BluetoothEventRedirector(1307): Received
android.bluetooth.adapter.action.DISCOVERY_STARTED
12-17 17:06:48.310: VERBOSE/BluetoothEventRedirector(1307): Received
android.bluetooth.device.action.FOUND
12-17 17:07:08.710: ERROR/FSIMEViewManager(1026): Unknown inputType
12-17 17:07:09.900: DEBUG/BluetoothChat(2369): onActivityResult -1
12-17 17:07:09.900: DEBUG/BluetoothChatService(2369): connect to:
**:**:**:**:**:**
12-17 17:07:09.900: DEBUG/BluetoothSocket.cpp(2369): initSocketNative
12-17 17:07:09.900: DEBUG/BluetoothChatService(2369): setState() 1 ->
2
12-17 17:07:09.900: ERROR/BluetoothChat(2369): + ON RESUME +
12-17 17:07:09.909: INFO/BluetoothChat(2369): MESSAGE_STATE_CHANGE: 2
12-17 17:07:09.919: INFO/BluetoothChatService(2369): BEGIN
mConnectThread
12-17 17:07:09.919: ERROR/BluetoothEventLoop.cpp(957): Synergy async
event, q = 4000, prim_base = 0520, event = 802e, len = 2
12-17 17:07:09.919: DEBUG/BluetoothChatService(2369): mmSocket =
android.bluetooth.BluetoothSocket@4a0852e0
12-17 17:07:09.919: ERROR/BluetoothService.cpp(957): UNIMPLEMENTED
NATIVE - createDeviceNative
12-17 17:07:09.929: DEBUG/BluetoothChatService(2369): setState() 2 ->
1
12-17 17:07:09.929: DEBUG/BluetoothSocket.cpp(2369): abortNative
12-17 17:07:09.929: DEBUG/BluetoothSocket.cpp(2369): destroyNative
12-17 17:07:09.929: DEBUG/BluetoothChatService(2369): start
12-17 17:07:09.929: DEBUG/BluetoothChatService(2369): setState() 1 ->
1
12-17 17:07:09.939: VERBOSE/BluetoothEventRedirector(1307): Received
android.bluetooth.adapter.action.DISCOVERY_FINISHED
12-17 17:07:09.939: INFO/BluetoothChat(2369): MESSAGE_STATE_CHANGE: 1
12-17 17:07:09.939: INFO/NotificationService(957): enqueueToast
pkg=com.example.android.BluetoothChat
callback=android.app.ITransientNotification$Stub$Proxy@4a278920
duration=0
12-17 17:07:09.939: INFO/BluetoothChat(2369): MESSAGE_STATE_CHANGE: 1
12-17 17:07:15.929: VERBOSE/BluetoothEventRedirector(1307): Received
android.bleutooth.device.action.UUID

black

unread,
Dec 17, 2010, 3:43:30 AM12/17/10
to Android-SDK-Japan
やはり、Listenモードで動作開始しているようです。

このListenモードで動作している端末で、Activityは正常に表示されていると思われます。
如何でしょうか?
この段階で画面上に強制終了のダイアログが出ていれば別の話しになりますが。。。

この状態で、メニューキーを押し、右側のID:discoverableをタッチすると、Bluetoothの検索受入
状態になります。
もう一台の端末でアプリケーションを起動し、Activityが正常表示された後にメニューキーを押し、
左側のID:scanをタッチすると接続先BT端末が表示されてその中に前記端末が表示されると思います。
その端末を選択すると接続が実施されCHATスタートと記憶していますが。


強制終了のダイアログが表示されているかが一番の焦点となります。
ご確認ください。
> data@a...@vmdl26015.tmp@classes.dex -> /data/dalvik-cache/
> data@a...@com.example.android.BluetoothChat.apk@classes.dex
> 12-17 17:06:31.711: ...
>
> もっと読む ≫

J.I

unread,
Dec 17, 2010, 5:25:40 AM12/17/10
to Android-SDK-Japan
少し調べたので自分の見解を述べます.

まず第一に,Bluetoothで通信を行うには,SPPとSDPとRfcoomが必要で,

SPP - ポートを作るためのプロファイル.
SDP - 相手がどのようなサービスを提供しているのかを発見したり,提供しているかなどの情報を扱う.
Rfcomm - デバイスの登録を行う.

という機能が必要である.
# 自分の解釈なので間違っているなら指摘して下さい.

これをふまえた上でエラーコードで怪しい所をみてみると,以下のようになっている.
以前上げたエラーとは若干違うのですが,上の方のエラーは以前から出ていました.

ERROR/BluetoothService.cpp(957): UNIMPLEMENTED NATIVE -
addRfcommServiceRecordNative
ERROR/BluetoothService.cpp(957): UNIMPLEMENTED NATIVE -
createDeviceNative

上のエラーはサーバー側としてソケットを作ったあと,
tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
の部分で出てるみたいです.
ここで,ふと思ったのがRfcomm自体が実装されていないんじゃないのかと.
Rfcommに登録出来ないのはそれ自体が無いからではないかとふと考えました.
dynabookAZという,端末を使ってるので端末依存な問題ではないかと考えるのでは,いかがですか.

また,addRfcommServiceRecordNativeとcreateDeviceNative というのが実装されていないのではないかと
思い,
この関数が実装されているプログラムソースを見つけたので,
Open Source Projectから
http://trwtnb.blogspot.com/2010/04/windowsandroideclipse.html
を参考に,
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core
のソースを引っ張ってきたのですが,これをどうプログラムに絡ませれば良いのかが分りません.
ndkを持ってきてコンパイルしようにもコンパイルの方法を良くわかりません.
Javaのビルドパスのネイティブ・ライブラリーのロケーションって所に追加しないといけないのかとか考えていますが上手く行きません.
ここで止まってます.

といった現状となっています.
少しまとまって無い文章になってしまいましたが,何か気になる点が有りましたらどんな点でもいいので情報をお願いします.

dynabookAZで動いたか動かないかだけでも分る方がいましたら,教えてください.お願いします.






On 12月16日, 午前9:39, black <x10k...@gmail.com> wrote:
On 12月16日, 午前9:39, black <x10k...@gmail.com> wrote:

black

unread,
Dec 17, 2010, 7:47:01 AM12/17/10
to Android-SDK-Japan
画面上に強制終了ダイアログが出ているという想定でコメントします。

OSとしては、ver.2.0からBluetoothのSPPに対応しています。
しかし、VM/JNI実装の段階でメーカーにて対応しきれていない可能性もありえます。
今回は、エラーメッセージからすると実装していない可能性が高いようです。
その場合、基本的に自分で拡張することは不可能です。
root権限を取得して、linuxの層まで入るといろいろ可能ですが、メーカーサポートからは外れてしまいます。
個人的な学習のためであればよいのですが、業務が絡むのであれば、ここまでで機器変更を考えた方がよいと思います。

一番良いのはdynabookAZでの動作実績があればよいのでしょうが、調べられた内容からすると難しいかの知れません。

ほぼ結論ですね。


On 12月17日, 午後7:25, J.I <cinemax.revolut...@gmail.com> wrote:
> 少し調べたので自分の見解を述べます.
>
> まず第一に,Bluetoothで通信を行うには,SPPとSDPとRfcoomが必要で,
>
> SPP - ポートを作るためのプロファイル.
> SDP - 相手がどのようなサービスを提供しているのかを発見したり,提供しているかなどの情報を扱う.
> Rfcomm - デバイスの登録を行う.
>
> という機能が必要である.
> # 自分の解釈なので間違っているなら指摘して下さい.
>
> これをふまえた上でエラーコードで怪しい所をみてみると,以下のようになっている.
> 以前上げたエラーとは若干違うのですが,上の方のエラーは以前から出ていました.
>
> ERROR/BluetoothService.cpp(957): UNIMPLEMENTED NATIVE -
> addRfcommServiceRecordNative
> ERROR/BluetoothService.cpp(957): UNIMPLEMENTED NATIVE -
> createDeviceNative
>
> 上のエラーはサーバー側としてソケットを作ったあと,
> tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
> の部分で出てるみたいです.
> ここで,ふと思ったのがRfcomm自体が実装されていないんじゃないのかと.
> Rfcommに登録出来ないのはそれ自体が無いからではないかとふと考えました.
> dynabookAZという,端末を使ってるので端末依存な問題ではないかと考えるのでは,いかがですか.
>
> また,addRfcommServiceRecordNativeとcreateDeviceNative というのが実装されていないのではないかと
> 思い,
> この関数が実装されているプログラムソースを見つけたので,
> Open Source Projectからhttp://trwtnb.blogspot.com/2010/04/windowsandroideclipse.html
> を参考に,http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;...
> ...
>
> もっと読む ≫- 引用テキストを表示しない -
>
> - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

J.I

unread,
Dec 18, 2010, 4:20:42 AM12/18/10
to Android-SDK-Japan
強制終了はおきません.
Toastで"Unable to connect"と表示されるだけです.

> しかし、VM/JNI実装の段階でメーカーにて対応しきれていない可能性もありえます。
最初からこれは懸念材料だったのですが,確信が持てず,ずるずるここまで来ました.
rootを取っていいのか,もしくはrootを取れれば使える。という確信が持てないのでちょっと情報を集めようと思います。

何か調べて分ったら書きこむので,みなさんも何か情報が有りましたらよろしくお願いします.
> ...
>
> もっと読む ≫
Reply all
Reply to author
Forward
0 new messages