コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

BitmapキャッチャVer1.2をリリースしました

BitmapキャッチャVer1.1にバイブレートの繰り返しが効かないというバグがありました。そのバグフィックスと、1つ機能を追加しましたのでブログに書いておきます。
機能が増えたので全部で5つとなりました。以下に機能を書きます。

  • Bitmap画像を受け取って、SmartWatchの画面に表示する。
  • Vibrator命令を受け取って、SmartWatchを振動させる。
  • SmartWatch画面へのタッチ情報を、Broadcast送信する。
  • SmartWatch画面でのスィープ情報を、Broadcast送信する。
  • SmartWatchの加速度センサの値を、Broadcast送信する。

最後のセンサの値送信が新しく追加した機能です。
GooglePlayでのダウンロードはこちらから

新機能についてだけ書いておきます。以前の機能はこちらから

他アプリから加速度センサの値を取得する方法

Bitmapキャッチャは、加速度センサ値のリクエストBroadcastを待っています。このため、receiver の intent-filterに以下を追加しています。

  <!-- Sensor intents -->
  <action android:name="com.luaridaworks.extras.SENSOR_REQUEST" />

このBroadcast送信を受け取ると、加速度センサの値をBroadcast送信します。

先ずは、下記のようにBroadcastを送信します。

 Intent intent = new Intent("com.luaridaworks.extras.SENSOR_REQUEST");
 sendBroadcast(intent);

そうすると、Bitmapキャッチャは加速度の値がBroadcast送信します。下記がそのプログラムの抜粋になります。

 else if(intent.getAction().equals("com.luaridaworks.extras.SENSOR_REQUEST")){
   //センサ情報のBroadcast要求があったので、返します
   Intent ssintent = new Intent("com.luaridaworks.extras.SENSOR_SEND");
   ssintent.putExtra("SENSORX", BitmapCatcher.SensorX);
   ssintent.putExtra("SENSORY", BitmapCatcher.SensorY);
   ssintent.putExtra("SENSORZ", BitmapCatcher.SensorZ);
   context.sendBroadcast(ssintent);
 }

各軸の拡張データ名が下記です。

  • SENSORX :X軸加速度
  • SENSORY :Y軸加速度
  • SENSORZ :Z軸加速度

 他アプリでは、この返信を受信する必要が有ります。受信するには、Manifestのreceiverに、intent-filterを追記します。

 <receiver android:name=".TSReceiver">
   <intent-filter>
     <!-- Sensor intents -->
     <action android:name="com.luaridaworks.extras.SENSOR_SEND" />
   </intent-filter>
 </receiver>

受信するために、BroadcastReceiverを継承したクラスを生成します。下記は1例です。

public class TSReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
   if(intent.getAction().equals("com.luaridaworks.extras.SENSOR_SEND")){
     try{
       Float x = (Float)intent.getSerializableExtra("SENSORX");
       Float y = (Float)intent.getSerializableExtra("SENSORY");
       Float z = (Float)intent.getSerializableExtra("SENSORZ");
     }
     catch(Exception e){
     }
   }
 }
}

 ここまで作りこんで、やっぱり、タッチ情報のBroadcast垂れ流しは、イマイチだなぁと思い始めています。ごめんなさい、仕様を変える可能盛大です。