カテゴリー ‘ Android

Androidのセンサーを調べてみる


Android端末は豊富なセンサーの機能を持っています。

これで、遊ばなくて何で遊ぶ?って位のものです。

で、どんなセンサーが存在するのか、分からなかったので一覧を作ってみました。

SensorクラスのTYPEで設定されているものが、Androidがサポートしているセンサーです。

TYPE_ACCELEROMETER 加速度センサー
TYPE_AMBIENT_TEMPERATURE 温度センサー
TYPE_GRAVITY 重力センサー
TYPE_GYROSCOPE ジャイロセンサー
TYPE_LIGHT 照度センサー
TYPE_LINEAR_ACCELERATION リニア加速度センサー
TYPE_MAGNETIC_FIELD 地磁気センサー
TYPE_PRESSURE 圧力センサー
TYPE_PROXIMITY 近接センサー
TYPE_RELATIVE_HUMIDITY 湿度センサー
TYPE_ROTATION_VECTOR 回転ベクトルセンサー
TYPE_ORIENTATION 方位センサー(非推奨)
TYPE_TEMPERATURE 温度センサー(非推奨)

11個のセンサーがサポートされています。

手元の端末で、どのようなセンサーが端末に搭載されているのか確認してみたいと思います。

確認するためには、「SensorManager」クラスの「getSensorList」で保持してるセンサーを取得して確認します。

こんな感じです。

これで確かめた、手持ちの端末が以下になります。

Nexus S

  • Sensor:KR3DM 3-axis Accelerometer
  • Sensor:AK8973 3-axis Magnetic field sensor
  • Sensor:GP2A Light sensor
  • Sensor:GP2A Proximity sensor
  • Sensor:K3G Gyroscope sensor
  • Sensor:Rotation Vector Sensor
  • Sensor:Gravity Sensor
  • Sensor:Linear Acceleration Sensor
  • Sensor:Orientation Sensor
  • Sensor:Corrected Gyroscope Sensor

Galaxy Note

  • Sensor:K3DH Acceleration Sensor
  • Sensor:AK8975 Magnetic field Sensor
  • Sensor:AK8975 Orientation Sensor
  • Sensor:GP2A Light Sensor
  • Sensor:GP2A Proximity Sensor
  • Sensor:K3G Gyroscope Sensor
  • Sensor:BMP180 Pressure Sensor
  • Sensor:Gravity Sensor
  • Sensor:Linear Acceleration Sensor
  • Sensor:Rotation Vector Sensor

Galaxy Nexus

  • Sensor:GP2A Light sensor
  • Sensor:GP2A Proximity sensor
  • Sensor:BMP180 Pressure sensor
  • Sensor:MPL Gyroscope
  • Sensor:MPL Accelerometer
  • Sensor:MPL Magnetic Field
  • Sensor:MPL Orientation
  • Sensor:MPL Rotation Vector
  • Sensor:MPL Linear Acceleration
  • Sensor:MPL Gravity
  • Sensor:Rotation Vector Sensor
  • Sensor:Gravity Sensor
  • Sensor:Linear Acceleration Sensor
  • Sensor:Orientation Sensor
  • Sensor:Corrected Gyroscope Sensor

 

どれもこれも、Sumsung端末…。

それぞれが何なのか、詳しくは分からないですが、この「getSensorList」で対象のタイプ例えば、圧力センサーがあるか調べたければ

「List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_PRESSURE);」として、戻り値があるかどうか確認する事で対応しているかどうか確認が出来るようです。

 

今回使用した、サンプルプログラムはgithubにアップしてあります。

サンプルプログラム

ArduinoとRC-S620/Sを接続してみた


とりあえず、ArduinoとRC-S620/Sを接続してみた。

接続した結果がこちら、

ど素人の電子工作なので配線がひどい事に…。とりあえず大目に見てください。

で、確認の為にまどろみはじめさんのブログ記事を参考に「Arduino+RC-S620/SでFeliCa IDmを取得してLCDに表示する

FelicaのIDmを取得して表示してみた!

見事表示に成功

(わざとぼかした画像を使っています)

今回使ったものは

もし、「Arduino Uno」も「ブレッドボード」も持っていいないという人は、

こちら「ArduinoをはじめようキットArduino UnoFeliCa リーダー・ライター RC-S620SFeliCa RC-S620S ピッチ変換基板(フラットケーブル付き)」がお勧めです!

みんなもLet’s Felica! Let’s NFC!

海外通販でNexus7を購入して届いたので箱空けてNFCとりあえず使ってみた


 

Nexus7で利用出来るオススメのNFCアプリの記事を

Nexus7を購入したらインストールするべきソフト NFC編

に書いたのでよかったら見て行って下さい。

 

今日、なななんとNexus7がおウチに届きました!

届いたものがこちら初めての海外通販でした。

頑丈なダンボールを空けてみると、綺麗な箱が出てきました。

Nexus7の箱を空けて見ると

こんなん出てきました。感動です。Android初のTablet端末を手に入れました。

これでFragment使ってアプリ開発してみようと言う気が沸々と湧いてきました!

とりあえず電源を入れてみる。

ここからは普通にAndroidの初期設定が始まった。でもWelcomって言われるとなんかうれしい。

とりあえず、接続するWi-Fiを選択する。

Googleアカウントでログイン

 

端末の設定のバックアップとリストア設定とりあえず使ってるGoogleアカウントの情報をリストアする事にした。

なので他の端末でインストールしている情報が見事全部落ちてく〜る〜

位置情報について聞かれたので、もちろん一つ返事でOKと答えておいた。

これでセットアップが完了した!!

ということで使ってみた。

とりあえず背面を見てみると、「NFC」の文字が、どうやら「NEXUS」と書いている辺りでNFCが反応するらしい。

フィルムを剥がしてみる。分かりづらいが、側面の左上に電源ボタンと音量調節のボタンが並んで付いています。

とりあえず、NFCのタグににかざしてみたら反応あり!!まぁ当然だけど。

タグの情報を見ると。

自分の名前が正しく表示と。こんな所でした。

 

感想

とりあえず、初めての海外通販で無事に商品が届いてくれてほっとしているのが一番です。

今回使った通販サイトは「B&H」さんでした。

今からの注文だと、届く日程は未定のようです。

私の場合は7月の上旬で、情報を聞いてすぐだったので早かったのかと思います。

思ったら即行動して正解でした。でも、たまに無駄遣いもするので要注意ですが…。

 

Nexus7関連記事

Nexus7でのユーザーレビューを

Nexus7を使ってみたレビュー iPadとの比較」で書きました、よかったら読んでみてください。

AndroidでNFCのIDmを読み取るサンプル


2010年の年末に発表されたAndroidの2.3からAPIがNFCに対応して、

さらに2011年の年末にNTT DocomoからNFC対応端末Galaxy Nexus, Galaxy SⅡ LTEが発売されて、Androidの開発者の中でもNFCが注目されてきた。

 

実際に日本で普及が加速度的に進んでいるかとうと疑問符が付くが、天下のS○NY様がいるからだろうか。(これ以上言うとおこられるのであまり深くは…)

で、とりあえずでもNFCのタグを読んでみたいと思うのが人情、

NFCには一意特定出来る(完全に一意ではないらしい)IDmという値があります。すぐに偽装出来てしまうのでこれを信じてアプリケーションを組んでしまうとNGですがセキュリティとか関係ないようなアプリでは、簡単に試せるのでいいのではないでしょうか?

ということでサンプルです。

サンプルは「ReadNFC」という名前でgithubにアップしています。

まず、NFCを読み取る為には、「AndroidManifest.xml」を修正する必要があります。

2行目を追加しないとパーミッションエラーでNFCが使えません。

4行目の「uses-feature」は、NFC対応端末のみにマーケットで表示する場合は必要になります。

次にNFCを近づけた場合のIntentFilterの設定です。

NFCのインテントフィルターは3種類あり、上から順番に優先順位が高いです。

ACTION_NDEF_DISCOVERED NDEFペイロードが見つかったときにActivityを起動するIntent
ACTION_TECH_DISCOVERED タグが見つかり、Intentの技術として登録されている場合にActivityを起動するIntent
ACTION_TAG_DISCOVERED タグが見つかった時にActivityを起動するIntent

「ACTION_TECH_DISCOVERED」で対象の技術を登録する方法は、18行目指定しているxmlにあります。

内容は、

このような内容です。

ここに記述する種類は、android.nfc.techに記述されています。

Intentを受信したら、IDmの取得方法です。

onNewIntentで渡ってきたintentから、「intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);」で取得できるbyte[]を取得します。

取得したbyte[]から12行目で文字列に変換します。

これで文字列でIDmが取得出来るので、アプリで利用してみて下さい。

AndroidのPendingIntentで気を付けるべき事


Androidで「Notification」「ウィジェット」「AlarmManager」などを使用する場合に、

PendingIntentを使う事になると思います。

この時に、使用する

getActivity(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), getService(Context, int, Intent, int)

こいつらを気を付けないと、上書きしている事に気付かないで上手く動作しないという迷路に陥るので注意が必要。

特に、複数PendingIntentを使用するようなアプリを作ると一度は悩むかもしれません。

しかも、良くあるサンプルプログラム達は、あまり良くない記述で書かれているし、

PendingIntentのドキュメントページにも第2引数の説明に「currently not used」という記述あるし。

嘘つくなと言いたくなる。

 

注意する点というのはこの第2引数の箇所である。

同じ値を入れて設定すると、最初に設定したものがキャンセルされてしまいます。

なので気をつけて下さい。

というのが結論でした。

return top