雑記帳 Android
FC2ブログ

2012'10.05 (Fri)

[Android]Inject eventを使ってみる

AndroidでキーやタッチパネルのエミュレーションをするにはInject Eventを使えばよいけど、
アプリレベルで使い方がよーわからん、のでちょっと調べてみた。ので覚書。


参考にしたHPのアドレス忘れてしまった。ごめんなさい、ごめんなさい。。。

先人のたどった道を調べると、こんなコードで行けるらしい。


テーマ : プログラミング - ジャンル : コンピュータ

19:48  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2011'08.21 (Sun)

Android端末で天体望遠鏡を制御する

前の記事で少し書いた、Android端末で天体望遠鏡を制御するI/Fに関してまとめます。

使った機材は以下のとおりです。

使用機材
望遠鏡
 鏡筒:ケンコー SE102
 赤道儀:ビクセン GP2赤道儀
 モーター:ビクセン MT-1
 二軸コントローラー:ビクセン DD-2

I/Fボックス
 Arduino Uno
 Sparkfun USB-Host shield
 その他電子部品
  (フォトカプラ 東芝 TLP521-4 抵抗:330Ω×4 ユニバーサル基板1枚)

1. モーターコントローラーの改造
 まずはDD-2にオートガイダー対応改造を施します。改造方法は調べるとたくさん出てきますが、私はSTELLA GARAGEさんの記事を参考に改造を施しました。RJ-25のコネクタが無かったので、メーカー純正改造と同じようにケーブルを引き出してあります。
(写真とか、回路図は後日掲載予定)


2. I/F部分の作成
 ArduinoとUSB Host shieldの接続はヘッダピンを半田付けすれば終了。外部電源から給電する場合はこれでOKなのですが、USB給電のみで使用する場合はこのままだとUSB Host Shieldにある、5Vを生成するレギュレータが正常動作しなくなり、Android端末から認識できたり、できなかったりと不安定になってしまいます。
調べたところ、Arduinoから5Vを直接引っ張りだしている記事が見つかったので、それを参考に少し手を入れています。(星祭りで残念になったのはこの部分)
次にフォトカプラの制御用基板を作ります。USB Host Shieldの代わりにEthernetを使いたい時が来るかも、とか、Bluetoothも使いたいな、とか、カメラのシャッター制御もやらせたい、とか思ったので、以下のようにピン配置を決めました。

A0 -- RA+
A1 -- RA-
A2 -- DEC+
A3 -- DEC-

D3 -- Camera Ready
D4 -- Camera Shutter

D5 -- Bluetooth TX
D6 -- Bluetooth RX

(写真・回路図は後日掲載予定)

3. ソフトウエアの作成
 今回のために作ったソフトは以下のものです。
  Arduinoのスケッチ
  Android用の制御ソフト
これらはいわたんlab日記さんの記事を参考にさせていただきました。

3.1 Arduino用スケッチ
 一番面倒なのはAndroid端末とArduinoの、USB経由での通信になります。
最初はADKを使って作ろうと思ったのですが、よく考えたら手元にADKが使える端末ないし。。。
で、いろいろ調べたところ、microBridgeというものを見つけました。これならadbで使えるので、古い端末でも使えます。これを使って作成しました。
やっていることは大したこと無くて、簡易的な制御コマンドを受けたら、それに応じてフォトカプラの制御をON/OFFするだけです。で、これPCからの接続も同時に対応できるので、LX200互換コマンドを実装すれば、一台でAndroidからも制御できるし、PCからのオートガイドも対応できてしまうのです。なので、そちらはただいま実装中。

3.2 Android用ソフト
 まずはテスト用として、ボタンを押したら制御コマンドをArduino側に送って制御する、ってだけのアプリを作成しました。アプリのプロジェクトにmicroBridgeの制御クラスを組み込む方法と、実際に通信をするさいに必要なパーミッションの設定を勘違いしていてはまりかけました。。。

4. 動作確認
 テスターを使って問題が無いことを確認したら、望遠鏡へ接続。モーター制御できるようになりました。
ただ、MT-1の最大速度が恒星時32倍速なので、ギアを見ていないと動いているのか分からない。。。

ということで、とりあえず動いたので満足。
次の野望としては、スマートフォンを導入支援装置にする+自動導入に挑戦したいと思っています。


13:13  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2011'04.25 (Mon)

[Android]ダイバーさんが初めてAndroid端末を入手したら

最近、ダイバー仲間が次々とAndroid端末に手を染め始めているのです。
同じ事を聞かれるのは面倒なので、個人的にお勧めアプリを書いておくのです。



ダイビングにあると便利そうなアプリ
バディシャッフル
https://market.android.com/details?id=net.divershi.buddyselect
バディを決めてくれるアプリ

エア消費チェッカー for ダイビング
https://market.android.com/details?id=net.divershi.airchecker
エアの消費量を計算してくれる

通信関係で便利なアプリ
twicca BETA
https://market.android.com/details?id=jp.r246.twicca&feature=search_result
Twitterクライアント。個人的にお勧め。
プラグインを必要に応じて入れるともっと便利に。
複数アカウントがある人は別のものを使ってね。

Jbook2
https://market.android.com/details?id=com.rocmok.jbook2
使いやすい電話帳

なまず速報β
https://market.android.com/details?id=jp.twiple.android.quake
緊急地震速報をお知らせしてくれるアプリ

IMONI
https://market.android.com/details?id=net.grandnature.android.imodenotifier
iモードメールクライアント。要imode.net契約

2chmate
https://market.android.com/details?id=jp.co.airfront.android.a2chMate
2chブラウザ


普通使いに便利なアプリ
QRコードスキャナ
https://market.android.com/details?id=com.google.zxing.client.android
QRコードを読み込むアプリ

MyQR
https://market.android.com/details?id=net.karappo.android.myqr
QRコード作成アプリ

Ringdroid
https://market.android.com/details?id=com.ringdroid
着メロ作成アプリ。好きな音楽ファイルを着メロに設定できる

ESファイルエクスプローラ
https://market.android.com/details?id=com.estrongs.android.pop
ネットワーク経由でファイル管理をするのに便利

FxCamera
https://market.android.com/details?id=ymst.android.fxcamera
いろんなエフェクトがあるカメラアプリ


ジョルテ
https://market.android.com/details?id=jp.co.johospace.jorte
スケジュール管理に便利。Googleカレンダーと同期できるのが便利

My Docomo Checker
https://market.android.com/details?id=jp.meloncake.mydocomo
料金を確認できる。

画面メモ
https://market.android.com/details?id=jp.fuukiemonster.webmemo
標準ブラウザに画面メモ機能を追加するアプリ

高級タスクマネージャー
https://market.android.com/details?id=mobi.infolife.taskmanager
余計なアプリを終了できる。

救命・応急手当の基礎知識
https://market.android.com/details?id=jp.co.c2inc.medicallite.first
その名のとおり。いざというときのために。

PAD長
https://market.android.com/details?id=jp.example.mongol.pad
クックパッドからレシピを検索

放射線チェッカー
https://market.android.com/details?id=com.yicha.android.hoshasen
まあ、時事ネタで。。。



渋滞状況
https://market.android.com/details?id=jp.straitmouth.jartic
渋滞状況をチェックできる

BatteryView
https://market.android.com/details?id=net.ngoose.batteryview
バッテリーの使用状況をグラフで見れる。ある程度ベストな状態が見つかればはずしたほうが良いかも?

MyTracks
https://market.android.com/details?id=com.google.android.maps.mytracks&feature=search_result
GPSによる位置ロガー。標高とかも分かるので、潜水病のリスク検討にも便利。

Google Sky Map
https://market.android.com/details?id=com.google.android.stardroid&feature=search_result
海のあとは星でも眺めてのんびりと。

幹事の割り勘
https://market.android.com/details?id=jp.exblog.kazuhito&feature=search_result
割り勘計算ソフト。便利。

駅探★乗換案内
https://market.android.com/details?id=com.ekitan.android&feature=search_result
乗り換え案内ソフト。運行情報も見れるのが便利

Eye-Fi
https://market.android.com/details?id=fi.eye.android&feature=search_result
Eye-Fi用アプリ。Eye-Fi X2のダイレクトモード使用時は必須。

Pic-Say
https://market.android.com/details?id=com.shinycore.picsayfree&feature=search_result
写真編集アプリ。

Little Photo
https://market.android.com/details?id=com.littlephoto&feature=search_result
エフェクトが豊富。楽しい。



なお、あくまで個人的な好みが過分に入ってます。不便だと思ったら好みのものを探してみてくださいませ。

テーマ : android - ジャンル : コンピュータ

00:01  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2010'12.20 (Mon)

[Android] GingerBreadのソースコードをビルドしてみる

まったく持って自分のための覚書。

基本はこの記事のとおりでOK。repo initする際のbranch指定を以下のようにする。

repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3_r1

以上

これだけだとあれなので、Twitter上で拾ったネタをまとめておく。

・DalvikVMのソースの中にANDROID_SMPというスイッチがある。1にすると適切にメモリバリアの命令を挿入する。
・android-2.3_r1についてるtoolchainはarmv7では大丈夫だがarmv5では時々不正なコードを生成する
・2.3から/proc/mtdは/proc/mountsに?

まあ、いろいろ変わっていそうだけれど、本格的に見れるのは年末休みだなぁ。。。

テーマ : android - ジャンル : コンピュータ

23:30  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2010'12.19 (Sun)

[Android]GingerbreadのCDDから、これから出そうな対応端末の妄想をしてみる 続き

さて、昨日の続き。今日はセンサーから見てみる。

7.3 Sensor
・センサーデバイスはすべて実装されなくても良い。
・センサーを搭載し、外部開発者向けのAPIに対応するのであれば、Android SDKのドキュメントにしたがってAPIを実装しなければならない。
 たとえば
  android.content.pm.PackageManager classごとにセンサーの有無を正確に通知すること
  SensorManager.getSensorList()もしくは類似の方法でサポートしているセンサー種類のリストを通知すること
  他のセンサーAPIに対して妥当な動作を行うこと
   などなど。詳細はAndroid SDKドキュメントを参照
・いくつかのセンサーは合成されて出力される。(たとえば、方向センサーや直線加速度計など)
・Android 2.3のSensor APIでは「Streaming Data」の概念を導入している。SDKのドキュメントを参照しなさい→でもぱっとみ、見つからないぞー。。。

7.3.1 加速度センサー
・デバイスは3軸加速度センサーを搭載すべきである。
・搭載するなら以下の基準を満たすこと
 ・イベントは50Hz以上の間隔で通知
 ・センサーの座標系はAPIドキュメントに記載あるものにあわせること
 ・自由落下の検出を行うために2G以上の加速度検出能力があること
 ・分解能は8bit以上
 ・標準の分解能は0.02m/s^2を超えないこと

7.3.2 磁気センサー
・デバイスは3軸の磁気センサーを搭載すべきである。
・搭載するなら以下の基準を満たすこと
 ・イベントは10Hz以上の間隔で通知
 ・センサーの座標系はAPIドキュメントに記載あるものにあわせること
 ・地磁気を検出するのに十分な精度を持つこと
 ・分解能は8bit以上
 ・標準の分解能は0.5uTを超えないこと

7.3.3 GPS
・デバイスはGPSを搭載するべきである。
・GPSを搭載するのであれば、捕捉時間短縮のためにAssisted-GPSを搭載するべきである。

7.3.4 Gyroscope
・デバイスはGyroscopeを搭載すべきである。
・加速度センサーが搭載されていない状態でGyroscopeを搭載すべきではない。
・搭載するなら以下の基準を満たすこと
 ・検出精度は5.5pi rad/s(約1000deg/sec)以上
 ・イベントは100Hz以上の間隔で通知
 ・分解能は8bit以上

7.3.5 Barometer
・デバイスは気圧計入れてもいいよ。
・入れるなら、適度に正確な高度計算ができること

7.3.6 Thermometer
・デバイスは温度センサーを載せてもいいよ。
・載せる場合はCPUの温度を測ること。その他の温度は測っちゃダメ。

7.3.7 Photometer
・デバイスに乗せてもいいよ。

7.3.8 Proximity Sensor
・デバイスに近接センサーを搭載してもいいよ
・搭載するならスクリーン面と対象物の間を測定すること。
・近接センサーはスクリーンに物体が近づいたかを検出し、通話中か判断する
・スクリーン面と別方向にセンサーが搭載されるのであれば、API経由でアクセスしてはダメ。
・近接センサーのスペックは1bit以上あればよい

7.4 Data Connectivity
7.4.1 Telephony
7.4.2 IEEE 802.11(WiFi)
:デバイスは802.11をサポートすべきである(a/b/g/n)
・Android APIに沿った形で実装されなければならない。

7.4.3 Bluetooth
・デバイスはBluetoothのレシーバーを搭載すべきである。
・搭載するなら、SDKドキュメントに記載されたRFCOMM baseのBluetooth APIでenableできなければならない。
・搭載するデバイスに対して、適切なプロファイルを実装すべきである。
・CTSでもサポートしているが、基本的な部分しかやってないので、人間の手でテストが必要になる。

7.4.4 NFC
・ハンドヘルドタイプのデバイスは、NFC用のトランシーバーおよび関連H/Wを搭載すべきである。
・デバイスを搭載するのであれば、以下の対応が必要。
 android.content.pm.PackageManager.hasSystemFeature() methodで実装される機能をレポートすること
 NFCフォーラムで定義されるType1-Type4のNDEFタグを識別できること。
・デバイスにNFCが実装されない場合、 android.content.pm.PackageManager.hasSystemFeature()で実装しているとしてはならない。また、関連APIでは何もしない用に実装しなければならない。

7.4.5 Minimum Network Capability
・デバイスはデータ通信のために一つ以上のネットワーク通信をサポートしなければならない・
・ネットワーク接続の際の通信速度は200Kbit/sec以上必要。
・デバイスが有線ネットワーク接続をサポートしても、一つ以上の無線ネットワークをサポートすべきである。
・デバイスはデータ通信のために複数の通信方式を実装しても良い。


7.5 カメラ
7.5.1 リアフェイスカメラ
・2Mピクセル以上の解像度が必要。
・オートフォーカスは入れるべき(H/W、S/Wにかかわらず)
・固定焦点もしくはパンフォーカスでもいいよ。
・フラッシュもつけていいよ。ただし、プレビュー中などはアプリから指示されない限り、勝手につけちゃダメ。

7.5.2 フロントフェイスカメラ
・つけてもいいよ。
・つけるならVGA以上の解像度で。
・標準のカメラとして扱っちゃダメよ。なぜなら、2.3 APIからフロントフェイスカメラ用API用意しているから。
・リアフェイスカメラと同じフィーチャー入れてもいいよ。
・カメラプレビューなどの場合には水平方向で反転表示できないといけない。
・postviewコールバックの際にはミラーする。
・最終的なイメージやストリーミングデータは反転しちゃダメ。

7.5.3 カメラAPIの動作
・Pixel FormatはYCbCr_420_SPをサポートしなければならない。
・データの形式はNV21円コーディング。これがデフォルト。

7.5.4 カメラの向き
・カメラの長辺とスクリーンの長辺は合わせなければならない。

7.6 Memory and Storage
7.6.1 Minimum memory and storage
・Kernel/Userspaceに対し、少なくとも128MByte以上の空きmemory領域が無ければならない。
・加えて、Kernel制御下にない各種デバイス制御用に最低128MByte必要である。
・不揮発性ストレージは150MByte以上必要である(/data以下)でも推奨は1G以上だからね。
・Android APIのダウンロードマネージャーは100MByte以上扱えるように実装すること。

7.6.2 Application Shared Storage
・アプリケーションのデータ共有領域は1Gbyte以上必要。
・共有領域は、箱から出した状態ですぐにマウントされるよう、設定されなければならない。
・/sdcardにマウントされるようにする。
・Permissionの設定は適切に行わなければならない。
・SDカードのように着脱可能な形にしても良いし、デバイスに内臓してしまっても良い。
・ホストコンピュータからコンテンツにアクセスできるような手段を実装しなければならない(USB Mass Storageとか)
・デバイスが複数の領域(SDカードと内臓ストレージなど)をサポートする場合には、MediaScannerやContentsProviderなどのCore Applicationに修正を加える必要がある。

7.7 USB
・デバイスはホストPCに接続可能なクライアントとして実装されなければならない
・デバイスはADBをサポートしなければならない
・デバイスはUSB Mass Storageクラスをサポートしなければならない
・デバイス側にはmicro Bコネクタを使うべきである。
・非標準のコネクタを使ってもいいけど、出荷時にホストPCとの接続性を確保してね。
・USB Mass Storageのサポート部分も実装すべきである(Removableデバイスか、Fixed Deviceか、とか)


ということで、要求されるH/Wの形がだいぶ見えてきた。けど、今とぱっと見、代わり映えしないんでしょうねー。。。

テーマ : android - ジャンル : コンピュータ

09:47  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top
 | HOME |  NEXT