Android

CursorAdapterとContentProviderの関係

AndroidでCursorのデータを一覧表示する場合、CursorAdapterが使用されていました。 このとき、データの更新をViewに反映するということについてフレームワークがなにを提供しているのかがわかりづらかったので、メモとして整理しておきます。 MediaStoreの…

AlertDialog#show()とActivity#showDialog()

Androidでダイアログを表示するときに利用するのが、AlertDialogクラスです。 Webでダイアログの表示について書かれた記事の多くは、AlertDialog#show()を用いています。一方、本家のAndroid Developersでは、Activity#showDialog()を用いたサンプルコードが…

スクリーンサイズごとにレイアウトxmlを切り替える方法について

参考ページ New Tools For Managing Screen Sizes | Android Developers Blog Screen-size Buckets OS3.1までの方法。 buckets dp 具体的な機種 small 426dp × 320dp QVGA[320 * 240] + ldpi = 426*320dp normal 470dp × 320dp large 640dp × 480dp WVGA[800…

iPhoneのロック解除画面のようなボタンをAndroidで作成する

iPhoneのロック解除画面のようなボタンの作成を、Androidで試みました。 画像を用意する Androidのデフォルトテーマのボタンは上下左右に隙間があるので、隙間が無いボタンの画像を用意しました。なお、これらの画像はpixelmatorの体験版で自作しました。 通…

btn_default.xmlの中身を調べる

ボタンのデザインをする場合のために、デフォルトのボタンがどのように実装されているか調べます。 デフォルトのボタンは、Widget.Buttonというstyleが適用されている。(たぶん) Widget.Buttonスタイルの定義 android:backgroundにて、drawableのbtn_defau…

同一プロセス内のServiceへのバインド

Serviceへのバインドには必ずAIDLが必要なのかと思ってたんですが、同一プロセス内であればAIDLは不要みたいです。勘違いしてました。 下記の記事を読んで知りました。 なお、このケースではサービスとクライアントが同じプロセスなので、AIDLを使わなくても…

HandlerThreadとHandlerとLooperの関係

IntentServiceを使って非同期処理を行う - Tech Booster 上記で紹介されているIntentServiceについて、どういうものなのか調べようと思ったら、HandlerThreadというものが内部的に使われていました。 気になる名前のクラスなので、こちらを先に押さえること…

PreferenceActivityのレイアウトカスタマイズ

「アカウントと同期の設定」みたいな画面をつくる 「アカウントと同期の設定」画面みたいな画面をつくるにはどうすればよいでしょう。 基本はPreferenceActivityだけど、フッター部分のボタンを追加するには工夫が必要そうです。 自作layoutにpreferenceを載…

Wifiに関するbroadcast

イベント broadcast int EXTRA_WIFI_STATE NetworkInfo EXTRA_NETWORK_INFO WIFIをONにしています WifiManager.WIFI_STATE_CHANGED_ACTION="android.net.wifi.WIFI_STATE_CHANGED" WIFI_STATE_ENABLING ** WIFIをONにしました WifiManager.WIFI_STATE_CHANGE…

プロセスとアプリケーションとスレッドの関係

プロセスとアプリケーションとスレッドについての理解が非常にあいまいなため、整理してみます。 プロセスとアプリケーションのライフサイクルの関係 アプリケーション内のサービスやアクティビティが全部終了していても、プロセスは停止しない。 例えばアク…

No longer wantなプロセスはkillされる

メモ。 一度アプリを起動すると、他のアプリを起動してもプロセスは生きている。アプリをばんばん起動し続けると、あるタイミングでプロセスが終了される。 その際、LogCatには下記の出力。 03-31 00:15:36.450: INFO/ActivityManager(92): No longer want c…

WakeLockを試す

HTC Desireで試した。 端末によって、異なる動作があるかもしれないので注意。 端末の設定 ディスプレイ>省電力を15秒にして、15秒放置するとスクリーンがOFFになるようにする。 ディスプレイの状態遷移 ・明るい画面(SCREEN_BRIGHT) ・キーボード(Homeボ…

Gerwin Sturmさん作のAndroidくんを折ってみた

自分は以前に、Androidくん折り紙のプロトタイプを作ったことがあったのですが、ツノを折りだすことに挫折していました。ORIGAMI ANDROID(展開図つき) - 理系のためのTIPS集しかし今日、偶然すごいものを見つけてしまいました。» Creare un origami Androi…

TelephonyManager.listen()をテストしたい

TelephonyManager.listen()の結果をユニットテストしようとしたのですが、うまくいきませんでした。試したことをメモしておきます。 listen()をオーバーライドしたTelephonyManagerのサブクラスを用意して、ContextのモックがgetSystemService()でそのサブク…

Serviceのユニットテスト

Testing | Android Developers Testing Overview | Android Developers Service Testing | Android Developers Serviceのユニットテストにはandroid.test.ServiceTestCaseというクラスが用意されている。 ServiceTestCase | Android Developers自分用にドキ…

着信のハンドリングについて

ブロードキャストインテントアクションをハンドリングする方法と、TelephonyManagerにリスナーを登録する方法があります。 前者はプロセスが起動してなくてもハンドリングできるけど、後者はプロセスが起動している必要があるようです。 あわせて読みたい 相…

BroadcastReceiverとプロセスについてのメモ

BroadcastReceiverのみのアプリの場合 インストールしてもDevicesビューにプロセスは表示されない。 ブロードキャストが送信されるとDevicesビューにプロセスが表示される。 ブロードキャストが終わってもDevicesビューにプロセスは残る。 Devicesビューでst…

Serviceを試す

Service | Android Developers Serviceの基本的な動きを確認してみます。まずログを吐くだけのサービスを用意します。プロセス名をsampleProcessにします。ここで設定したプロセス名はDeviceビューで確認できます。2011/1/22 追記 プロセス名を設定しない場…

Android Bazaar and Conference 2011 Winterに行ってきた

Android Bazaar and Conference 2011 Winter 日時: 1/9(日) 10:00〜 場所:東京大学 本郷キャンパス Android Bazaar and Conference 2011 Winterに行ってきました。スタッフのみなさま、登壇者のみなさまおつかれさまでした。 全体的に熱気がすごく、Androi…

ユーザが電話をかけたときのインテントを受信してみる

ユーザが電話をかけたときのインテントを受信してみます。 public static final String ACTION_NEW_OUTGOING_CALL Broadcast Action: An outgoing call is about to be placed. Intent | Android Developers AndroidManifest.xml <receiver android:name="ExBroadcastReceiver"> <intent-filter> </intent-filter></receiver>

broadcastについて

任意のブロードキャストメソッド ( Context.sendBroadcast()、 Context.sendOrderedBroadcast()、Context.sendStickyBroadcast() などといった ) に渡されるインテントオブジェクトは、関与しているすべてのブロードキャストレシーバに配信されます。さまざ…

オプションのつくりかた

onCreateOptionsMenuの引数Menu#add()によりオプションを追加できます。 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, OPTION_ITEM_ADD, Menu.NONE, "add") .setIcon(android.R.drawable.ic_menu_add); menu.add(Menu.NO…

ListActivityについて

ListViewを扱いやすくするためにListActivityというものが用意されています。 ListActivity#getListView() /** * Get the activity's list view widget. */ public ListView getListView() { ensureList(); return mList; } private void ensureList() { if …

actionとUriで指定したIntentからどのようにActivityを特定しているか?

連絡先を表示したい場合 こうすると startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people"))); ちゃんとDialtactsContactsEntryActivityがcmpに指定される。 12-08 20:22:51.547: INFO/ActivityManager(60): Starting activ…

ListView+ArrayAdapterについてのメモ

Activity public class SandboxActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListA…

AndroidDev.jpに行ってきた #adevevent

AndroidDev.jpに行ってきました。とても実践的な内容で大変参考になりました。みなさまありがとうございました。会場はECナビさんの会議室でした。会場のフロア入り口が、オフィス離れしたおしゃれなエントランスだったのでたじろぎました。 箇条書きで、メ…

Android ユーザビリティセミナー 2010( #android_ui )に行ってきた

日経BPさん主催のAndroid Usablity Seminar 2010に行ってきました。貴重な話が満載で、とてもためになりました。みなさまありがとうございました。 会場は満員御礼でした。講演のあいまにはBGMが流れて、いい雰囲気でした。ペットボトルで水を配布していて、…

Androidのパッケージ毎のソースディレクトリの場所

パッケージ フォルダ名 android.drm.* drm, media android.security.* keystore android.graphics.*android.renderscript.* graphics android.location.* location android.media.* media android.opengl.* opengl android.sax.* sax android.telephony.* te…

ORIGAMI ANDROID(展開図つき)

ORIGAMI Dukeに続き、AndroidのマスコットキャラクターDROIDくんを折り紙で折ってみました。不切正方形1枚です。 目とツノはこの設計から折りだすのは難しそうです… やっつけ展開図 かざぐるまの基本形から手足を折りだしています。

Androidの非同期処理を試す

Androidアプリでスプラッシュ画面を表示させる方法 - MIRAI THE FUTURE Androidでスプラッシュ画面を表示する方法を調べていたらHandlerを使った処理が出てきたので、ついでに非同期処理を調べてみました。 別スレッドから画面描画はできない 別スレッドから…