Recent Entries

TAG
Andoll, android, LifeAround, OpenIntent

 Andollは、発言内容を外部のアプリから制御する仕組みが取り入れられています。

そのひとつめの例として、先日リリースしましたLifeAroundに実装されており、
LifeAroundが写真を見つけた時、たまにAndollがあたらしいの見つけたよ、と
知らせてくれるようになります。
LifeAroundではAndoll君のきまぐれ度も踏まえ、いつもおしえてくれるわけ
ではありません。10回に1回くらいでしょうか。言うこと聞かない子なので。

発言後も表示されるのは別の発言をするまでの間ですので、通知の必要性が
あるものに利用されるのは避けてください。あくまでもお遊び要素です。
また、高頻度で発言してしまうとその発言ばかりになってしまいますので、発言
させたい時もたまに発言を行う程度にお願いします。あまりいじめないように。

以下コード。
/////////////////////////////////////////////////////////
Intent intentAM = new Intent();
//日本語用発言
intentAM.putExtra("talkkey", "LifeAroundが新しい写真みつけたってよ。");
//英語用発言
intentAM.putExtra("talkkeyE", "LifeAround found new places photo!");
//画像指定用。変更しないでください
intentAM.putExtra("imgkey", "101");
//レイアウト指定用。変更しないでください
intentAM.putExtra("imglay", "1");
//発言用Action。変更しないでください
intentAM.setAction("com.kayac.bm11.andoll.myupdate");
ctx.sendBroadcast(intentAM);
/////////////////////////////////////////////////////////

Actionをcom.kayac.bm11.andoll.myupdateにして、broadcastすることで
Andoll君がしゃべってくれます。
 

 

*追記:2010/04/13

LifeAroundの他にも、弊社製作の起こしてこえ部(アラーム再生時に発言)・個人的に製作していたごみの日ウィジェット週別設定対応版(明日のごみを発言)でもAndollと連携して発言できるようになりました。
アプリ製作者の方、通知領域に表示するついでにAndoll対応にしてみてはいかがでしょうか。

TAG
android, LifeAround, Open Intent

LifeAroundは自動的に自分の生活圏の情報をあつめてくれるアプリです。

基本機能は写真のみですが(日本国内のみtownmarketのチラシに標準対応)、
プラグインにより自動的に収集する情報を追加することができます。
初期状態から入っているtownmarketのチラシ収集機能もこのプラグインの仕組み
を利用して実装されています。

GPSの位置情報取得処理を一括で行うことによりバックグラウンドでの動作で問題
になる電池消費の問題を解決でき、収集のONOFFを1画面で行えるようになります。

main.png setting.png
メニュー画面 設定画面

 ■サンプルデータ

LifeAround sampleprj.zip

 ■必須クラス

最低限必要なクラスは下の4つになります。
括弧内のファイル名はサンプルアプリでの名前です。好きな名前を使用して構いません

・プラグインの情報を公開するクラス
(Testapp_OI.java)

・位置情報を受け取るクラス
(Testapp_POS.java)

・メニュー画面で選択された際に呼び出されるクラス
(Testapp_BOOT.java)

・情報表示するクラス
(Testapp_show.java)

 

■処理の流れ -プラグインの情報をLifeAroundに渡す
(該当クラス:Testapp_OI.java)


1.LifeAroundのメニュー画面にて、以下のbroadcastが行われます。
  ////////////////////////////////////////////////////
  com.kayac.smartphone.Lifearound.CheckOI
  ////////////////////////////////////////////////////
 

2.intent-filterでこのbroadcastを受け取る定義をAndroidManifest.xmlに行います。
   //例////////////////////////////////////////////////
  <receiver android:name="Testapp_OI">
 <intent-filter>
 <action android:name="com.kayac.smartphone.Lifearound.CheckOI"></action>
 </intent-filter>
  </receiver>
  ////////////////////////////////////////////////////
 

3.パラメータを設定する

Testapp_OIはBroadcastReceiverを継承しています。
以下がプラグインの設定をアプリに渡している部分です。

  //例////////////////////////////////////////////////
  int numResults = getResultCode();
  numResults++;
  setResultCode(numResults);
  String[] strs=new String[8];
  //メニュー・設定画面ボタンに表示される文字列
  strs[0]="クーポン";    
  //メニュー・設定画面に表示される説明テキスト
  strs[1]="説明文説明文";   
  //位置データを受け取るintent-filter名
  strs[2]="com.kayac.testapp2.Testapp_POS";    
  //国指定コード。空の場合全ての国、"JP"を指定すると日本限定
  strs[3]="";   
  //現在は未使用。将来の拡張用空き項目
  strs[4]="";   
  //現在は未使用。将来の拡張用空き項目
  strs[5]="";   
   //メニュー画面で選択された際に受信したいintent-filter名
  strs[6]="com.kayac.testapp2.Testapp_BOOT";  
  //パッケージ名
  strs[7]="com.kayac.testapp2";                
  result.putStringArray("result" + (numResults),strs);
  setResultExtras(result);
  ////////////////////////////////////////////////////

これでメニュー画面にボタン・設定画面にチェックボックスが表示されます。
 

■位置情報を受け取る
(該当クラス:Testapp_POS.java)

LifeAroundが位置情報を取得した際にプラグインが位置データを受け取る部分です。
位置情報を受け取るには設定画面にて、情報を取得するようにチェックボックスがマークされている必要があります。
インストールされていてもLifeAround側で取得しないと設定している場合にはbroadcastされません。

  //例////////////////////////////////////////////////
  <receiver android:name="Testapp_POS">
 <intent-filter>
 <action android:name="com.kayac.testapp2.Testapp_POS"></action>
 </intent-filter>
  </receiver>
  ////////////////////////////////////////////////////

3行目のcom.kayac.testapp2.Testapp_POSは、Testapp_OI.Javaにて設定したものを使用します。
次にTestapp_POS.java内に、Bundleされてくる緯度経度の値を取得します。

  //例////////////////////////////////////////////////
public void onReceive(Context arg0, Intent arg1) {
        Bundle result = arg1.getExtras();
        int lat=result.getInt("lat");
        int lng=result.getInt("lng");
  ////////////////////////////////////////////////////

これだけでは受信しただけですので、通常はサービスなどに値を渡すことになると思います。
取得したい頻度によっては数回に1度や前回との時間差で処理を変えるかもしれませんが、サンプルではすぐにサービスに値を渡しています。
Testapp_POSはBroadcastReceiverを継承しているので、あまり時間のかかる処理には向きません。 

 

■メニュー画面から呼び出す
(該当クラス:Testapp_BOOT.java、Testapp_show.java)

LifeAroundのメニュー画面にてクリックされた場合、Testapp_OIで指定した文字列がbroadcastされます。

  //例////////////////////////////////////////////////
  <receiver android:name="Testapp_BOOT">
 <intent-filter>
 <action android:name="com.kayac.testapp.Gurunavi_BOOT"></action>
 </intent-filter>
  </receiver>
  ////////////////////////////////////////////////////

Testapp_BOOTはbroadcastReceiverを継承したクラスですので、すぐに表示用Activityを呼び出すことで画面遷移を行います。

  //例////////////////////////////////////////////////
  Intent intentgo2 = new Intent(arg0, Testapp_show.class);
  intentgo2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  intentgo2.setAction(Intent.ACTION_VIEW);
  arg0.startActivity(intentgo2);
  ////////////////////////////////////////////////////

TAG
android, LifeAround, リリース

 slide.png

カヤックandroidアプリ第9弾、LifeAroundをリリースしました。

LifeAroundは自分の生活圏の情報を集めるアプリです。
これまでのその場所の周囲で検索するような情報を取りに行くような感覚ではなく、
身の周りの情報はいつも自分の手の届く場所にあって、いつでもひきだせるもの
だという感覚を目指しました。

基本機能は自分の周りの写真の収集です。
自分の行動範囲の周囲の写真を自動的に収集していきます。スライドショーで再生
すると知っている場所や知らない風景(すぐ近くを通っているはずなのに)、いつもの
場所のちがう季節の風景など、いつも意識することもなく通り過ぎていたものを発見
できるでしょう。
自分の今いる場所ではなく生活圏をターゲットにすることで、まったく意識していな
かったエリアからも新しい身近な発見ができることと思います。

LifeAroundには、収集したい情報を後から追加することができます。
インストール時には、まずタウンマーケットのチラシを収集する機能が付属しています。
このように収集したい情報を後から追加することにより、欲しい情報をいつも自分の
まわりにおいておくことができます。
この仕様については次の記事にて解説する予定です。
 

TAG
android

error.png 

eclipseで制作していて、上の図のようにLogCatがエラーを起こし表示できなく
なることがありました。
この解決方法はworkspaceにある
.metadata\.plugins\org.eclipse.core.runtime\.settingsフォルダ 内、
com.android.ide.eclipse.ddms.prefsをエディタで開きます。

com.android.ide.eclipse.ddms.logcat.filters=??という行があり、
「|」区切りでフィルタの設定が記述されていて、
1データは「aaaaa\:2\: aaaaa\:」のように「\:」で3つに区切られていますが、
エラーを起こす場合、「aaaaa\:\:2\: aaaaa\:」のように区切りが多い部分が
あると思います。ここを削除。
(\はバックスラッシュ)

この後、eclipseを再起動するとLogCatが正常に動作するようになります。
原因としてはフィルタリングする文字列に「:」を使用していた際に起こるようです。

参考:Logcat View fails with "Could not create the view: For input string: "our" "

TAG
andtroid, TelephonyManager

 ホームアプリはHOME++に落ち着いてきたhidakaです。

国内ではandroid1.6が主流ですが、海外では2.0だったり1.5だったりと
バージョンはまちまちだったりします。
特に1.6じゃなかったっけ?という国でもキャリアによって1.5だったりと
いうことがあります。
そのためアプリのminsdkversionは1.5で作るのですが1.6以上の機種には処理を
切り替えたい場合など端末のバージョンによって処理を変える必要がでてきます。
1.6で主にテストしていて使ってるコードがじつはAPI level4で1.5では強制終了
くらうというオチもあります。
今回はそのコード。つかうクラスはTelephonyManager
こういうのってまとめてないと、あれ?なんだっけと時間食うんですよね。