Android 18 feet,Android · inthehand/32feet Wiki · GitHub

Android Support

We have brand new support on Android as of February 2013. It of course is compiled using Xamarin's MonoDroid toolset. http://xamarin.com/

There is support for Radio, DeviceInfo, Client.Connect, sending and receiving data, Discovering known devices, and Listener. It has been tested on a Nexus 7 and a Samsung Tab 2 7.0 device.

The library project file is in *...\ITH.Net.Android* The current library project file targets version 2.3, i.e. API Level 10, see below. There is a solution file at *...\AndroidAaaa*

Test tool

A version of my cross-platform testing app has been created in *...\Testing\AndroidMenuTesting* and the ~140 commands are displayed in the AppBar menu system. Press your device menu button to open that, on most devices with the vertical three dots at bottom-right. A few buttons provide shortcuts GetAllRadios, GetDeviceInfo, FlagsDiscover, Connect-SimpleClosingFirst, and Listen. See the screenshot below.

Android Permissions

http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#startDiscovery()

"Note: Most methods require the BLUETOOTH permission and some also require the BLUETOOTH_ADMIN permission"

We also need permission INTERNET because we use NetworkStream. If that becomes a problem we can maybe look at a workaround.

{anchor:androidApiLevel}

Details

Things not supported include:

Radio: Class of Device, versions, setting mode.

DeviceInfo: Setting name, LastUsed, Connected, versions, GetServiceRecords, SetServiceState, and InstalledServices.

Client.Connect: Available, DataAvailable, Connected, Client, LingerState, and LinkKey/Policy.

Discovery Devices:

Listener: Publishing custom Service Records, listening on a specific port number, and setting Service Class bits, LocalEndPoint is blank, and Pending. (Setting Service Name is supported.)

Security: No support.

Android API Level

We've used only functions from Android API Level 10, i.e. GINGERBREAD_MR1. We lose BluetoothSocket.isConnected by not using Level 14, which affects BluetoothClient.Connected. (We could probably get down to Level 5, if using createInsecureRfcommSocketToServiceRecord and listenUsingInsecureRfcommWithServiceRecord weren't required).

http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels

{anchor:todo}

To Do

DONE. Support Device Discovery. So change AndroidBthClient to be a subclass of CommonDiscoveryBluetoothClient, create and register an Android BroadcastReceiver in AndroidBthInquiry which calls back whenever a device-found event occurs. That will provide support for both in-range and live discovery.

DONE Check what Finalizers are required. Listener, and BluetoothClient/Stream.

Provide socket errors. Currently we'll just pass any Mono-Android exceptions.

Compiling

#defines

||Define||Use|

|{{ANDROID}}|Compiling to target the Mono Android platform -- not to do with Bluetooth API|

|{{ANDROID_BTH}}|Include the 32feet.NET support for Bluetooth using the Android Bluetooth API|

|{{FAKE_ANDROID_BTH_API}}|Include the Mock Android Bluetooth API classes|

Related

|{{NO_WINFORMS}}|Exclude any WinForms usage, needed for instance when targeting Android|

|{{NO_WIDCOMM}}|Hide special case Widcomm dependency checking in BluetoothFactory|

|{{NO_MSFT}}|Hide code in e.g. BluetoothWin32Authentication referencing MSFT Bluetooth structs etc|

For real use compiling for Android

As used by the preliminary project ITH.Net.Android.csproj

{{

V2;FX3_5;ANDROID;ANDROID_BTH;NO_MSFT;NO_WINFORMS;NO_WIDCOMM}} For running in the emulator add the {{FAKE_ANDROID_BTH_API}} define, which allows Radio, Devices, and Discovery currently.

For test on desktop Windows (project file FX2)

Do not reference the {{Mono.Android.dll}}. This includes Mocking of the Android API.

{{

ANDROID_BTH;FAKE_ANDROID_BTH_API}}

For -- useless?? -- compile on desktop Windows (project file FX2)

Add reference to {{Mono.Android.dll}}, along with

{{

ANDROID_BTH;NO_WINFORMS}}

The latter is required since System.Drawing.Size is also included in the Mono.Android.dll and so conflicts with that from the FCL's System.Drawing.dll.

AndroidMenuTesting screenshot

Android_Screenshot_2013-02-20-09-53-45_r8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值