Android 関連のメモ
関数の引数などは忘れやすいので、できるだけメモしておきます
今回はNotification のコンストラクタ
icon
ステータスバーに表示するアイコン
tickerText
ステータスバーに登録された際、一瞬だけ表示するメッセージ
when
拡張部分の通知領域に表示される通知発生時刻
カテゴリー: android
AIDL で利用できる型
Android プログラミングで AIDL ファイルを作成するとき
使用可能な型が制限されているので
忘れないようにメモ
以下は利用可能な型
プリミティブ型
java 言語が提供している基本的な型
(int, boolean, double, char などなど)
String
Stringクラス
List
List クラス
でも中身が利用できる型じゃないとダメ
Map
Map クラス
これも中身が利用できる型じゃないとダメ
CharSequence
TextView などに設定されている読み込み専用文字列
AIDLインターフェース
AIDLで作成されたインターフェースクラス
Parcelable型
Parcelable クラスを継承したクラス
Android エミュレータに音楽ファイル転送
Android プログラミングで
エミュレータに音楽ファイルを転送し、アプリの起動実験しました
開発環境は ubuntu 10.10 32 bit です
音楽ファイルを考えましたが、あまり浮かばなかったので
今回は手持ちの ipod nano の音楽ファイルを使用しました
まず、最初に ubuntu に ipod nano を差します
今回使用したのは2009年に買ったものです
次に、nautilus が起動してディレクトリがみれるので、
音楽ファイルが格納されている場所
/media/SNOW\ /iPod_Control/Music/
ここからまずは ubuntu へファイルを移します
cp -r /media/SNOW\ /iPod_Control/Music/* $HOME/音楽/
これで、
Phythmbox で音楽ライブラリができます
あとは、音楽ファイルをエミュレータに移すために
eclipse を起動し、
Android エミュレータでのSDカード
のときと同じように
画面をDDMSに切り替えて
File Explorer のところにある
/mnt/sdcard
のところへ
音楽ファイルをドラッグ&ドロップすれば転送できます
ちなみに、転送しただけでは反映されません
真ん中にある設定ボタンをクリックして
dev Tools を選択して
Media Scanner をクリックすることで、
エミュレータに転送したファイルを読み込み
反映させることができるようになります
PreferenceActivity の利用
今回は、PreferenceActivity を作成し
画面から取得できるようにした
ちなみ、PreferenceActivity は
Activity クラスのサブクラス
今回は、レイアウトファイルではなく
Preference情報を記載したファイルを作成し
それをonCreateメソッドで設定している
手順だとActivity クラスの作成と同じステップにはなるけど
Preference ファイルの作成では画面で座員を考慮しなくていいので
わかりやすい
Preference ファイルの設定は、通常はXMLエディタで行うけど
ダブルクリックして Android Xml エディタでも設定が可能
追加できる Preference の種類は、以下のとおり
CheckBoxPreference
チェックボックス
EdittextPreference
テキストボックス
ListPreference
選択リスト
PreferenceCategory
カテゴリ作成
PreferenceScreen
別の Preference 呼び出し
RingtonePreference
着信音
Preference
独自のpreferenceクラスを利用
なお。追加した Preference はAndroid Xml から直接編集が
可能になります
なんとなくだけど、似たような仕組みのものがあったようなきがします
たしか、HTML と CSS
もこんなかんじだったような気が
AppWidget概要
Appwidget は、ホームボタン長押しででるウィジェットを作成する
エミュレータでウィジェットを画面に
追加し、実際の動作確認をしたいのなら
menu と書いてあるボタンをクリックし
Add をクリック
次に
Widget をクリックすれば
自作アプリのウィジェットのテストができる
AppWidget は、ホーム画面に常駐するけど
実際には更新処理我ないかぎり、同じイメージを表示し続けるあぷり
なので、そこまで電池消費はないらしい
更新を頻繁にするなら話はべつみたいだけど
ただ、仕組みについては複雑で
原因は、常駐アプリゆえの省電力設計
動作はしていないので
更新が必要なときにイベントが発行されるという仕組みらしい
更新処理の仲介には
Provider クラスを経由してイベントを処理しているらしい
Ziio 7 を開発環境に利用
日経Linux 2011-05 を参考に、Ziio 7″ を adb で認識できるようにしました
今回の実験機材は
そのまま実行しても、うまくいかない点が多かったので
ここは
自分なりに調べたりして解決を目指します
最初の Android SDK の導入に関しては
以前から開発環境に使っている Android 開発環境の手順で導入しました
この環境の作成手順は
DropBox とスクリプトで開発環境
に書いてあります
さらに、この環境をカスタマイズします
sudo vi /etc/udev/rules.d/70-android.rules
でファイルを作成し
SUBSYSTEM==”usb”,SYSFS{idVendor}==”2350″,SYMLINK+= “android_adb”,MODE=”0666″
を記述します
echo 0x2350 >> ~/.android/adb_usb.ini
で
ベンダーIDを登録します
これで
sudo shutdown -r now
で再起動し、
adb devices
で
認識されていれば、成功です
Eclipse を立ち上げ、プロジェクトを実行すると
どの端末で実行するかを聞かれます
Android エミュレータが起動していると
エミュレータ と Ziio 7″ を選べるので
このときに Ziio 7″ を選ぶと
Ziio 7″ でアプリが実行されます
実行した感想としては
やはりエミュレータよりも実機のほうが早いと思います
また、この機体には root 化するという方法もあります
ただし、保証がなくなったり、いろいろと面倒なことがおきたりするようです
iPod toich や iPhone の脱獄のようなものです
Android アプリ作成(インテント編)その5
今回も、日経Linux 2011-05 を参考に
アプリ開発の勉強です
今回は Google ストリートビューを使ったものになります
前回使用したコードを改造します
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“http://itpro.nikkeibp.co.jp“));
startActivity(intent);
}
を
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“googles.treetview:cbll=35.710883,139.796321“));
startActivity(intent);
}
とします
この35.710803 が緯度
139.796321 が経度
となります
ちなみに、
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“geo:35.710883,139.796321“));
startActivity(intent);
}
にすると、Google マップのほうで表示されます
さらに、このストリートビューには
カメラ視点をかえることができます
緯度、経度の後に
&1,ヨー,,ピッチ,ズーム
を追加すればできます
ヨーは、北からの時計回りの角度
ピッチは少しわかりにくく、
真上は -90
真下は 90
ズームの倍率が少々わかりにくく
2倍なら 2.0なのに、
4倍になると 3.0
となるようです
少し検索してみましたが、
Anderoid googlestreetview ズーム
ではでませんでした
とりあえず、まずは実行して検証するということで
実権開始
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“google.streetview:cbll=35.710883,139.796321“));
startActivity(intent);
}
を
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“google.streetview:cbll=35.710883,139.796321&cbp=1,10,,10,1“));
startActivity(intent);
}
にして実行すると
見事に雷門の画像がでてきます
この経緯度を自分の好みの場所にすることで
画面に表示することができます
Android エミュレータのサイズ変更
Android エミュレータのサイズを変更してみました
今回の参考サイトは
Galaxy Tab の Android エミュレータの画面サイズを変更するです
通常の画面サイズでなら問題はなかったのですが
VMware Player でエミュレータを起動したら
大きすぎて入りませんでした
どうやら、デフォルトは9ぐらいのようです
起動するエミュレータを選んで
start を押して出てくるウィンドウで、
scale display to real size にチェックを入れ
Screen Size (in): を 7
にし、Launch するとちょうどよい大きさになりました
今回、起動させたモニタサイズは19インチです
Android アプリ作成(インテント編)その4
インテントで、地図を軽度、緯度で指定し、
geo:経度,緯度
で指定してもエミュレータでエラーになるので、検索してみました
その結果
謎めいたインテント
によりますと、
地図を使って表示するには、
エミュレータのターゲットとして「Google APIs」を選択する必要があるようです
これが原因でいくらやってもエラーになっていたようです
しかたがないので、
新規でエミュレータを作成し、起動します
この状態で、再度 Eclipse で実行をすると
どのエミュレータを使って検証するかを聞かれるので
新規に作成したエミュレータを選択し
実行することで解決しました
Android アプリ作成(インテント編)その3
インテントの中身を変更することで、
電話をかける画面を表示できるそうなので、
さっそく実験してみました
tel:電話番号
ということなので、
さっそくソースコードを改造します
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“http://itpro.nikkeibp.co.jp“));
startActivity(intent);
}
となっているのを
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“tel:123456789“));
startActivity(intent);
}
とします
これで、電話をかける画面がでてきます
ちなみに、実際の機体ではないので、自宅の電話番号や
携帯の番号でかける実験をしてもかかることはありませんでした
また、連絡帳を開くこともできるようです
パスである content://contacts/people/
を指定するとでるらしいのですが
私の環境では
You don’t have any contacts to display
To add contacs, press menu and touch
Accounts to add or confiture an account with contqcts you can sync to the phone
new contact to create a new contact from scratch
Import/Export
とエラーがでます
おそらく、連絡帳がないためのエラーと思われます
ちなみに、変更して実権するなら
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“http://itpro.nikkeibp.co.jp“));
startActivity(intent);
}
を
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(“content://contacts/people/“));
startActivity(intent);
}
というように変更します
このように、少し改造するだけでかなりの改良をすることができるので
なれてくると
さらにおもしろいものができそうです