みんなKitKat持ってて、もはや需要がないであろう記事ですが備忘録として残します。
今のスマホの支払い、あと1年2か月くらい残ってるし…
KonashiってAndroidで使えるの?
最近はほとんどコミットがなく、開発は活発とは言えませんがSDKがあります。
YUKAI/konashi-android-sdk
BLEってAndroid4.3からじゃないっけ?
4.3未満でもメーカー側で対応しているケースがあり、SHARPの端末もAndroid 4.3からバックポートしています。
Android 4.2搭載端末での Bluetooth Low Energy API 利用方法
プロジェクトの作成
API Level 18をターゲットにしてプロジェクトを作成します。
# idを調べる
$ android list target | grep android-18
id: 13 or "android-18"
# プロジェクトを作成。
# アクティビティの名前はMainActivityにしておくと
# サンプルと同じなので楽。
# パッケージ名はテキトーに
$ android create project -n KonashiLED -t 13 -p KonashiLED -k com.nocd5.konashi.led -a MainActivity
$ cd KonashiLED
# konashi-android-sdkをライブラリプロジェクトに追加
$ android update project -l ../konashi-android-sdk/Konashi -p .
konashi-android-sdk/samples/KonashiSampleBasic内の以下のファイルをコピー
- libs/
- res/
- ic_launcher-web.png
ソースコードも内容は丸ごとコピーですが、パッケージ名はプロジェクト作成時のものに合わせ修正します。
Android 4.2搭載端末での Bluetooth Low Energy API 利用方法を参考にAndroidManifest.xmlを編集します。
diff -r be8789f6c9e1 AndroidManifest.xml
--- a/AndroidManifest.xml Sat Oct 11 01:41:32 2014 +0900
+++ b/AndroidManifest.xml Sat Oct 11 01:45:14 2014 +0900
@@ -12,4 +12,10 @@
</intent-filter>
</activity>
</application>
+ <uses-sdk
+ android:minSdkVersion="17"
+ android:targetSdkVersion="18" />
+ <uses-feature android:name="jp.gr.java_conf.ble_profile.api.gatt"/>
+ <uses-permission android:name="android.permission.BLUETOOTH"/>
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
</manifest>
Konashi Android SDKの修正
そのままだとBLEをサポートしていると見なされないので以下のように修正し
jp.gr.java_conf.ble_profile.api.gatt
も許容するようにします。
ちなみにPackageManager.FEATURE_BLUETOOTH_LE
の定義はandroid.hardware.bluetooth_le
です。
diff --git a/Konashi/src/com/uxxu/konashi/lib/KonashiBaseManager.java b/Konashi/src/com/uxxu/konashi/lib/KonashiBaseManager.java
index 49657b2..e24118e 100644
--- a/Konashi/src/com/uxxu/konashi/lib/KonashiBaseManager.java
+++ b/Konashi/src/com/uxxu/konashi/lib/KonashiBaseManager.java
@@ -385,7 +385,8 @@ public class KonashiBaseManager implements BluetoothAdapter.LeScanCallback, OnBl
/////////////////////////////////////////////////////////////
private boolean isSupportBle(Context context){
- return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);
+ return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) ||
+ context.getPackageManager().hasSystemFeature("jp.gr.java_conf.ble_profile.api.gatt");
}
protected boolean isEnableAccessKonashi(){
デプロイ
あとはビルドしてインストールするだけです
$ ant debug
$ adb -d install -r bin/KonashiLED-debug.apk