Androidアプリ開発 インテント [Androidアプリ AREarthroid]
本日は、Androidアプリネタである。AREarthroidは、「geo:lat,lon」といったインテントに対応している。しかし、プレイスや、ブラウザからAREarthroidに位置情報を送りこんでやることができない。
プレイスでラーメン屋などを検索して「この場所を共有」ってやると、メーラーなどを立ち上げるメニューが表示される。ここにAREarthroidも表示できれば、何かと便利なんじゃないかと思ったわけです。
Androidにはインテントというしくみがあり、インテントでアプリケーション間のデータ通信ができる。
今のところ、AREarthroidは、geo:lat,lonといったURIをインテントで受け取ると、lat,lonで示される位置にマーカーを置くようになっている。
geo:に対応したアプリとしては、他にGoogle MapやGoogle Earthがある。複数の対応アプリがインストールされているときは、どのアプリを起動するのかが選択できる。
geo:のインテントが投げられるとAREarthroidがリストに載る。
プレイスの「この場所を共有」でも何らかのインテントが投げられているはずだが、ここにAREarthroidは載らない。Google Mapも載らないから、きっとgeo:じゃないのだろうな、というあたりを付けて調べてみた。
検索して調べ中...
インテントには、アクションがある。geo:lat,lonの場合、アクションはVIEW。「この場所を共有」の場合は、SENDアクションのインテントが投げられるようである。
アプリがどういったインテントに対応しているのかは、AndroidManifest.xmlで定義することができる。さっそく、SENDアクションのインテントを受けられるように定義を追加してみる。
最初のintent-filterは、自動生成で作成されたもの。ラウンチャ用で、これが無いと多分、ラウンチャーから起動できない。
次のintent-filterは、geo:用。アクションはVIEWでスキーマがgeoになっている。
最後のintent-filterが今回追加したもの。アクションをSENDにしている。
これで、onCreateでインテントの内容をログに表示させてみよう。
一度、実行して、インストールする。プレイスを立ち上げ、「この場所を共有」してみると...
出た。しかし、名前しかやってこない。
ブラウザの「ページを共有」でも受け取れるらしいので、やってみた。
おお、今度はURLがちゃんと入っている。
プレイスの場合は、getExtras()で取ってくるわけじゃないのか?
さらに調べる。
どうも、メール送信で送られてきているな。メール送信の場合は、EXTRA_SUBJECTとEXTRA_TEXTのエクストラデータが入ってきている。
しかし、住所とか電話番号とかがTEXTに入っていないのだが... もしかすると、添付テキストなのか?添付されたデータはどうやって読み込むのかなぁ... EXTRA_STREAMか。
違った。ログに表示するときに、\nで切られているだけだった。ちゃんとEXTRA_TEXTで取れていた。
住所が渡ってくるから、これをGeoCoderにかければいいか。m.google.co.jpへのURLも付いている。これみたらいいのか?
HttpURLConnectionを使って、内容を読み込んでみる。うーん、簡単ではないな。
lat:35.123456,lng:140.123456
っていうのが怪しい。JSON形式だなこれは。正規表現使ってマッチングかけて取りだしてみるか。なんか遅そうだけど、やってみるか。
コードの作成中...
よし、できた。これでいけるはず。
できたっぽい。
サイト内を検索
プレイスでラーメン屋などを検索して「この場所を共有」ってやると、メーラーなどを立ち上げるメニューが表示される。ここにAREarthroidも表示できれば、何かと便利なんじゃないかと思ったわけです。
Androidにはインテントというしくみがあり、インテントでアプリケーション間のデータ通信ができる。
今のところ、AREarthroidは、geo:lat,lonといったURIをインテントで受け取ると、lat,lonで示される位置にマーカーを置くようになっている。
geo:に対応したアプリとしては、他にGoogle MapやGoogle Earthがある。複数の対応アプリがインストールされているときは、どのアプリを起動するのかが選択できる。
geo:のインテントが投げられるとAREarthroidがリストに載る。
プレイスの「この場所を共有」でも何らかのインテントが投げられているはずだが、ここにAREarthroidは載らない。Google Mapも載らないから、きっとgeo:じゃないのだろうな、というあたりを付けて調べてみた。
検索して調べ中...
インテントには、アクションがある。geo:lat,lonの場合、アクションはVIEW。「この場所を共有」の場合は、SENDアクションのインテントが投げられるようである。
アプリがどういったインテントに対応しているのかは、AndroidManifest.xmlで定義することができる。さっそく、SENDアクションのインテントを受けられるように定義を追加してみる。
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="geo" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter>
最初のintent-filterは、自動生成で作成されたもの。ラウンチャ用で、これが無いと多分、ラウンチャーから起動できない。
次のintent-filterは、geo:用。アクションはVIEWでスキーマがgeoになっている。
最後のintent-filterが今回追加したもの。アクションをSENDにしている。
これで、onCreateでインテントの内容をログに表示させてみよう。
if ( getIntent().getAction().equals(Intent.ACTION_SEND) ){ String url = getIntent().getExtras().getCharSequence(Intent.EXTRA_TEXT).toString(); android.util.Log.v("AREarthActivity", "onCreate intent data=" + url); }
一度、実行して、インストールする。プレイスを立ち上げ、「この場所を共有」してみると...
出た。しかし、名前しかやってこない。
ブラウザの「ページを共有」でも受け取れるらしいので、やってみた。
おお、今度はURLがちゃんと入っている。
プレイスの場合は、getExtras()で取ってくるわけじゃないのか?
さらに調べる。
どうも、メール送信で送られてきているな。メール送信の場合は、EXTRA_SUBJECTとEXTRA_TEXTのエクストラデータが入ってきている。
しかし、住所とか電話番号とかがTEXTに入っていないのだが... もしかすると、添付テキストなのか?添付されたデータはどうやって読み込むのかなぁ... EXTRA_STREAMか。
違った。ログに表示するときに、\nで切られているだけだった。ちゃんとEXTRA_TEXTで取れていた。
if ( intent.getAction().equals(Intent.ACTION_SEND) ){ String text = intent.getExtras().getCharSequence(Intent.EXTRA_TEXT).toString(); String lines[] = text.split("\n"); for ( String line : lines ){ android.util.Log.v("AREarthActivity", "onCreate intent " + line); } }
住所が渡ってくるから、これをGeoCoderにかければいいか。m.google.co.jpへのURLも付いている。これみたらいいのか?
HttpURLConnectionを使って、内容を読み込んでみる。うーん、簡単ではないな。
lat:35.123456,lng:140.123456
っていうのが怪しい。JSON形式だなこれは。正規表現使ってマッチングかけて取りだしてみるか。なんか遅そうだけど、やってみるか。
コードの作成中...
よし、できた。これでいけるはず。
できたっぽい。
サイト内を検索
2012-05-03 11:42
nice!(0)
コメント(0)
Copyright Atsushi Asai Google+朝井淳
[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2015/03/03
- メディア: 単行本(ソフトカバー)
Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
コメント 0