投稿

3月, 2009の投稿を表示しています

Javaのフレームワーク Wicket 本を買ってみた。

イメージ
JavaのフレームワークのWicketの日本語本が出たというので買ってみました。 翻訳本とかではなく、書きおろしなので、記念買いといいますか、そんな感じで本屋で中身を確認することなく、ネットで買ったのですが、本代が気にならない方なら手元に置いておいて損はないと思います。 著者のブログ Wicketの開発環境を構築したりする暇はなく、通勤途中で全部読んでしまいましたが、通勤時に読むには集中する必要があるレベルの本で、ちょっときつかったです。 内容は、Strutsとの比較が多すぎるのがちょっとあれでしたが、比較的細かいレベルまで記載されており、無駄なページ稼ぎもなく力作となっています。 WicketによるWebアプリケーション開発本の感想 新人に、この本を渡して勉強しといてという感じに使うのは無理 1週間で出来る系本が別途欲しい (書いて出してほしい) 日本語を使う上での特有の問題の記載がすくないが、問題なく動くから記載がないということか? といったところです。 Wicketフレームワークを会社で採用するかは微妙な所です。結構好きな感じのフレームワークなのですが、以前Tapestryを使用していた時と同様、最大の難点は情報量の少なさと、将来の不安(普及するのか)ですね。 Share on Tumblr Tweet

Android Market Active installsの値がおかしい件

イメージ
Android Marketの中のロジックが変わったようです。 RSSReaderやPodcat等の設定は何も変えてませんが、この週末は、totalダウンロードの増加分の約8倍Active installsが増えていました。 Active installs数の増加がダウンロード数よりも増えることは常識的にありませんので、何かの間違いか、数値の意味合いの変更になったかのどちらかだと思います。 この数値に関しての詳細はどこにも記載されていませんので、現状では謎としか言えませんが、Android Marketの機能強化作業の影響ではないかと個人的に考えております。 何かわかったらまた書きたいと思います。 Share on Tumblr Tweet

Android MarketをPCから見る方法

イメージ
Android Market のページをPCから見てもトップ10ソフト等が表示されるだけで、詳しくどのようなソフトがあるのかは見ることができません。 通常は、実機上のAndroid Marketソフトを使用して見ますが、公開したソフトのコメントをちょっと見る時などは不便です。Android Marketの管理画面上にユーザから書かれたコメントや、開発者からのコメントを書き込みできると良いのですが、現在そのようにはなっていません。 従ってAndroid MarketをPCから見る方法がないかと良く聞かれます。PCから見る方法に関して既に知れ渡っているかと思っていましたが、そうでもないようですので、記載します。 Cyrket http://www.cyrket.com/ ほぼリアルタイムで、コメントが表示されるので非常に便利 Android Market Place Rankings http://androidstats.com/ ランキング主体、カテゴリ内のランキング情報等がわかる サイトがアップデートされるタイミングが不明、参考程度に留める。 ソフトウェアの詳細ページは、Cyrketに飛ぶ Share on Tumblr Tweet

Android DefaultSharedPreferences

イメージ
SDK内には、DefaultSharedPreferencesというクラスはありませんが、getDefaultSharedPreferences()で取得できるSharedPrefrencesの事をDefaultSharedPreferencesと私は呼んでいます。 SharedPreferencesは、ユーザが自由なファイル名及びモードで作成できますが、PreferenceActivityでは自動的に、SharedPreferencesを作成します。この自動的に作成されるSharedPreferencesがDefaultSharedPreferencesです。 DefaultSharedPreferences特徴 ファイル名はパッケージ名+”_preferences” アクセスモードは通常、MODE_PRIVATE アプリケーションディレクトリ下の、shared_prefディレクトリに作成される。 DefaultSharedPreferencesの取得法 PrefrenceManagerクラスの、getDefaultSharedPreferences()でSharedPreferencesを取得可能です。DefaultShredPreferencesですので、ファイル名とモードは必要ありません。 ActivityクラスのSharedPreferences getPreferences(int mode)でDefaultSharedPreferencesを取得可能です。ファイル名なしで、モードのみの指定となります。(通常はMODE_PRIVATEを指定するのが良いでしょう)。 注意) SDK 1.1のActivityの説明ページで、getSharedPreferences()というメソッド(引数なし)が記載されていますが、このようなメソッドはありません。

Android SharedPreferences について

イメージ
SharedPreferencesの動作について色々調べていたのですが、途中経過としてまとめです。 SharedPrefrencesとは まずSharedPreferencesは、内部的にキーと値をHashMapとして保持し、最終的にXMLファイルとして出力をする。代表的な関数として以下の物がある。 getBoolean(String key, boolean defValue) getFloat(String key, float defValue) getInt(String key, int defValue) getLong(String key, long defValue) getString(String key, String defValue) 編集する時は、SharedPreferences.Editorを使用する。 作成されるXMLファイルのファイル名はプログラムから自由に指定ができ、アプリケーションディレクトリ下の、shared_prefディレクトリに作成される 少し分かりにくい点は、モードパラメーターはファイル作成時に使用されるということである。 SharedPrefrenceファイルが作成されるのは、ApplicationContextクラスのgetSharedPreferences (String name, int mode)メソッドが最初に呼ばれた時で、modeはこの時の作成時のファイルのモードとなり、そのままlinux状のファイルパミッションとなる(666等) 読み込み時に、パラメータで指定したモードでオープンする意味ではない。 サンプルソース Android SDKドキュメントの中に記載されているソースのコピペ import android.app.Activity;import android.content.SharedPreferences;public class Calc extends Activity {public static final String PREFS_NAME = "MyPrefsFile";. . .@Overrideprotected void onCreate(Bundle state){super.onCreate(state);. . .// Restore pref

Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意する こと

イメージ
PreferenceActivityについては、以前 Android アプリケーションの設定画面の作り方 という記事で簡単に記載しました。ソフトウェアの設定画面等で使用するために用意されている、PreferenceActivityは、XMLファイルを作成するだけで自動的に値の保存、初期値設定等行うので非常に便利です。 設定画面上で変更が加わった時に呼ばせることができる、onSharedPreferenceChangedというコールバック関数がありますが、これで少しつまずいたので解説です。 onSharedPreferenceChangedとは SharedPreferenceの値が変更になった時に呼ばれるコールバック関数です。 ユーザにより設定が変更された時に、PreferenceActivity内ですぐに変更を処理したい時に使用します。 例えば、タイマーのインターバル時間が変更されたら、設定された値を、Summaryに表示する時など使用します。 このコールバック関数は、PreferenceActivity内で、registerOnSharedPreferenceChangeListenerを使用してコールバック登録、また、unregisterOnSharedPreferenceChangeListenerを使用して解除をします。 登録 getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 解除 getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); 呼ばれた時の処理 引数のkeyに変更されたキーの値が入ってきます。 処理をしたいキーなのか判断をして、処理すべきキーであれば、sharedPreferencesから値を取り出し処理をします。 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {if(getString(R.string.pref_interval_key).equals(

Android Google Android Hackathonで優勝

イメージ
3/20開催の、Android Hackathonに、行ってきてもらったわけなのですが なんと、優勝して帰ってきました。 Androidぬいぐるみと、表彰状 なお、表彰状の裏には、3000円分のAmazonギフト券(ギフト番号)が印刷されていました。 開発者にとって、本代は常にかかるものですから、気が利いていてとてもいいですね。 Google廊下 お弁当 すごいなぁと感激しましたが、もちろん、今回優勝できたのは、Hackathonで良い開発メンバーに恵まれた結果だと思います。 名前は許可取ってませんので載せませんが、ありがとうございました。 会社の近くに来られたら、是非寄ってください。豚しゃぶをおごらさせて頂きます。 ブログ内の関連する記事 Android Hackathon(はっかそんと読むらしい)に潜入 Share on Tumblr Tweet

Android システムリソース ディバイダー一覧

イメージ
Android OSが持っているR.drawableのシステムリソースの中で、接頭語がディバイダとなっているリソースがある。 これは、区切り線といったら良いだろうか、以下の画像のようなものである。 Android SDK ドキュメントには4種類のdividerが記載されているが、9-patch形式になっているので、単体で画像ファイルだけ見ても判別不能なので、アプリケーションに組み込んで比較してみた。 ディバイダーの種類 divider_horizontal_bright divider_horizontal_dark divider_horizontal_dim_dark divider_horizontal_textfield XMLファイル レイアウトファイルから、androidのdrawableのアクセスは以下のように記述した。 <ImageView android:id="@+id/titleDivider"android:layout_width="fill_parent"android:layout_height="1dip"android:src="@android:drawable/divider_horizontal_dark"android:scaleType="fitXY"android:gravity="fill_horizontal"android:layout_marginLeft="10dip"android:layout_marginRight="10dip"/>

Android 日付フォーマット

イメージ
Androidでは、ユーザーが日付フォーマットの指定でき、 プログラム側では、これらのフォーマットを参照して画面に出力する必要がある。 日付表示フォーマット 日付表示フォーマットは、Setting – Date & Time – Select date formatにて設定をする。 指定できるフォーマットは、以下の5種類 12-31-2009 31-12-2009 Dec 31,2009 31-Dec-2009 2009-12-31

Android 時間フォーマット

イメージ
Androidでは、ユーザーが時間のフォーマットが指定でき、 プログラム側では、これらのフォーマットを参照して画面に出力する必要がある。 時間表示フォーマットは、Setting – Date & Time – Use 24-hour formatにて設定をする。 時間表示フォーマットは、12時間表記か24時間表記かのどちらかとなる。

Android MarketのCopy Protection動作

イメージ
Android Marketでの有料ソフト配布開始に伴い開発者のソフトウェア登録ページに以下の項目が追加された。 Public options Off (Application can be copied from the device) On (Helps prevent copying of this application from the device. Increases the amount of memory required by users to install the application) Copy Protection Offの時 有料ソフト、無償ソフトにかかわず、総ての実機へのインストールが可能 今までのAndroid Marketの動作と同じ Copy Protection Onの時 有料ソフト、無償ソフトかかわらず、Dev Phoneへソフトウェアのインストールは不可能 実際に、AndroidMarketのソフト一覧に出てこないのか、インストールは出来るけど、実行できないのか、具体的な所を知るために、どのようになるかをWareki(年齢早見)とDevPhoneを使って調べてみました。

Android ViewStubを用いたapiキーの切り替え

イメージ
先日の記事、「 Android ApiキーをRelease版とDebug版で切り替える方法 」にてコード内でリリースキーとデバックキーの切り替え方法を記載したが、ViewStubを用いることで、MapViewの生成をコード内から追い出す事が可能になる。 簡単な画面であればコード内でMapViewを生成してしまっても問題はないが、個人的にはlayoutファイル内に入れるのが好きなのでViewStubによるapiキーの切り離しを行った。 ViewStubの使用方法 Android SDKのViewStubの説明ページ に総て書いてあるので特に説明をする事はないのでソースコードのみ記載する。 ViewStub stub = (ViewStub) findViewById(R.id.mapview_stub);if(isDebugAble(this)){Log.v("debug");stub.setLayoutResource(R.layout.mapview_debug);}else{Log.v("release");stub.setLayoutResource(R.layout.mapview_release);}View inflated = stub.inflate();mMapView = (MapView)inflated; layoutファイル <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/mainlayout"android:layout_width="fill_parent"android:layout_height="fill_parent"><ViewStubandroid:id="@+id/mapview_stub"android:layout_width="wrap_content"android:layout_h

Eclipse スペルチェック

イメージ
Eclipseのスペルチェック機能は非常に便利であるが、固有名詞などは間違いとして大量に認識されるので、便利だなぁぐらいに思っていてあまり重視していなかった。 AndroidのソフトRSSReader のユーザから、「Clear」ボタンのスペルが間違っていると指摘を受け、あわててリソースを見直すと、恥ずかしいことに他にもスペルミスを発見した。 Eclipseではユーザ定義の辞書を作成できるので、今回作成して使用してみることにした。 ユーザ辞書は、一般 – エディタ – スペルにて設定 上記画面にて、ユーザ定義辞書を使用に、以下のようなファイルを作成し設定をする。 taosoftwarepodcast ただ、何故か「download」というワードがエラーとなります。(謎 ついでに、Eclipse3.2では、メニューのデバックボタンを押したら、前回実行したアプリケーションを自動的に実行していましたが、Eclipse3.3では、仕様変更になり不便だなぁと思っていましたが、調べて修正しました。 設定 – 実行・デバック – 起動中にて、「常に前回起動したアプリケーションを起動する」にチェックを付けます。 Share on Tumblr Tweet

Android ApiキーをRelease版とDebug版で切り替える方法

イメージ
MapViewを使用するソフトウェアでは、リリース用のapiキーとデバック用のapiキーが必要になる。 従ってレイアウトのxmlファイルに2つMapViewの記述を用意して、リリース時にコメントアウト切り替えを行うか、layoutファイルを使用しないといった少々面倒な事をする必要がある。 XMLで切り替えをする例 <!--<com.google.android.maps.MapViewandroid:id="@+id/mapview"android:apiKey="@string/mapkey"android:apiKey="hogehoge Release apiKey"android:layout_width="fill_parent"android:layout_height="fill_parent"android:enabled="true"android:clickable="true"/>--><com.google.android.maps.MapViewandroid:id="@+id/mapview"android:apiKey="hogehoge Debug api key"android:layout_width="fill_parent"android:layout_height="fill_parent"android:enabled="true"android:clickable="true"/> リリース版にデバック用のapiキーを間違えて使用してしまう等のリスクを下げるため、リリース時にはリリース版のapiキーを自動的に使用する仕組みがあると便利である。 先日の記事、「 Android MapViewで使用するapiKeyの共有 」にて、MapViewで使用するapiキーをグループ内で、共有するという記事を書いたが、この少々乱暴な手法を拡張して、最初からリリースキーで開発してしまえばいいのでは?と思ったりもしたが、さすがにそれはやってはいけな

Android Hackathon(はっかそんと読むらしい)に潜入

イメージ
タオソフトウェアのメンバーが、Android Hackathonに潜入しています。3/20行われた事前ミーティングに参加しました。 見つけた方はやさしくしてあげてください。 私は行けなくて残念です。 ブログ内の関連する記事 Android Google Android Hackathonで優勝 Share on Tumblr Tweet

Dev Phone SIM無しアクティベート

イメージ
Dev PhoneのSIM無しアクティベート方法や、アクティベート方法は色々な方が書かれていますが、Dev Phoneのファームウェアをアップデート後、再度アクティベートをしました。今後も頻繁に発生すると思いますので、自分のメモとしてまとめました。 前回のアクティベーションDev Phoneを購入した時は、手持ちのSIMを用いてアクティベーションを行ったのですが、今回はSIMなしでのアクティベーションです。 環境はWindowsです。 SIMなしアクティベーションメモ Dev Phoneを起動し、USBケーブルでPCに接続 アクティベーションした事にする。 device_provisionedを1にセットしてリブート # cd /data/data/com.android.providers.settings/databases# sqlite3 settings.dbsqlite>insert into system (name, value) values ('device_provisioned',1);sqlite>.exit#reboot リブート後以下の画面が表示される。 ネットワークがつながっていないので、Google Account設定はできないため、ネットワーク設定を行う。 Wifi設定 以下のコマンドを打ち込むとセッティング画面が立ち上がるので、Wireless controlsでWifi設定を行う。 adb shell$su# am start -a android.intent.action.MAIN -n com.android.settings/.Settings 設定をしたら、バックボタンで、「Welcom to Android Dev Phone1」画面に戻る Google Android のアカウント情報を入れて終了

Android 実機 Vodafoneから4月発売

イメージ
Android Phoneは、色々な会社から出る出るという話は良く聞くのですが、具体的にいつ?というとなかなかわからなかったりするのですが、イギリスのVodafoneサイトに、HTC Magicが4月に発売されるという情報が載っています。 HTC Magicの初めてのリリースとなります。 HTC Magicは、G1(HTC Dream)とは異なりキーボードレスの端末となります。 HTC Magic – The new Google Android mobile phone from Vodafone: ブログ内の関連する記事 Android Magic価格表 2009/5/1発売 Android GWにあった出来事 Share on Tumblr Tweet

Dev Phoneの公式ファームウェアアップデート

イメージ
Dev Phone用の公式ファームウェア1.1がリリースされました。 2009/4/28追記 1.5へのバージョンアップの場合は、 Dev Phoneファームウェアアップデート手順 (v1.5) をご覧ください。 Dev Phone 1のファームウェアアップデートを待ってはいたのですが、Dev Phoneはいつでも自分でアップデートができるので、あまり重要視はしていませんでした。 正式にリリースされたということで人柱も兼ねてインストールをしてみました。 環境は、Windows Vista32bit版です。 Dev Phoneのファームウェアアップデート HTCのインストール方法解説サイト の通りに作業を行えば問題なくアップデートできます。 準備 fastboot.exeを上記サイトからダウンロード(Windows版) Android 1,1用の入System imageとRadio imageを上記サイトからダウンロード adb コマンドを使用するので、Android SDK 1.0r2以上がPCにインストールしてあること(スキップ) ファイルをDev Phoneに転送するのでusb接続できるようにする(スキップ) Radio Firmwareのupdate SDカードが刺さっているのを確認 Dev PhoneをPower off – Power on (ねんのため) Dev PhoneをUSBケーブルと接続する radio imageをsdカードのルートにupdate.zipという名前でコピーする。 >adb push ota-radio-1_22_14_11.zip /sdcard/update.zip1353 KB/s (9131603 bytes in 6.587s) 転送バイト数が表示されすぐにコマンドが帰ってくるが、バックグラウンドでコピーしているから1分から2分待てということです。 Power off リカバリーモードで起動 HOMEキーを押しながら起動、以下のような画面が表示される。 キーボードを開きALT+l を押す。 ALT+sを押しインストール実行 以下のような画面が現れてインストールが実行される。 完了画面が表示されたら、HOME – BACKキーを押してradio imageを書き込む。 画面キャプチャをしようとゆっくりしていたら、H

Android MapViewで使用するapiKeyの共有

イメージ
MapViewを使用したプログラムでは、apiKeyが必要になります。 このapiKeyは、 Android Maps API Key Signupサイト にて取得する必要があります。 証明書の作成方法や、apikeyの設定方法に関しては詳しいSDKドキュメントがあるのでそちらを参照してください。 Google Android SDK MapKeyの説明 Google Android SDK MapViewドキュメント 実際には、エミュレータで動作するためのapiキーと、Android Market等にリリースする時に使用するapiキーの2つを取得する必要があります。 このため以下の2点について考える必要があります。 グループで開発する時にどのようにapikeyをハンドルするか リリース時にリリース用apikeyに変更するのを忘れないようにする グループで開発する時にどのようにapikeyをハンドルするか 開発中は、自動的に作成された、debug.keystoreを使用しています。 (debug.keystoreに関しては、 Android 電子署名1 にも記載してあります。) debug.keystoreは、SDKのインストール後に作成をするため、グループ内のAさんとBさんでは違った物になります。デバック用のMapView用のapikeyを取得するには、debug.keystoreが必要ですから、AさんBさんそれぞれのデバック証明書を用いてapikeyを取得する必要があります。 この時の問題は めんどくさい ソースコードは、もちろん構成管理ソフトで共有しているわけですから、各々がlayout.xmlのapikeyの値を書き換える必要がある エミュレーター上のテスターによるテストにもapikeyが必要 -> めんどくさい この「メンドクサイ」を解決するには、debug.keyを共有してしまうのが一番です。 やり方は、アプリケーションもしくは、社内でデバック用に共有するdebug.keyを作成し、開発者のEclipseのdebug keyを入れ替えてしまうといった方法です。 設定場所は、Windows > Prefs > Android > Build。下記画像のDefault debug keyのファイルを共有用debug.keyで上書きをし

Android USB driver vista 64bit版

イメージ
過去の記事、 Android Dev PhoneをUSB接続 してみるにて、DevPhoneとPCとの接続方法を記載しましたが、Vista64bit版USB Driverは用意されていませんでした。 Vista64bit版USB Driverが欲しくて、調べたところ、xda-developersにて64bit版をアップしている人がいました。 http://forum.xda-developers.com/showthread.php?p=2918876 記事を見ると、テストモードで起動しなければならないとの事で躊躇していたところ、 新しいSDKドキュメント に64bit版USBドライバの記載を見つけました。 Android SDK SDK1.1_r1から、vista用64bit版usb driverは、SDKに付属しています。 SDKのバージョンが1.1になり、Developerサイトも変更になりましたが、以前よりドキュメントが増えています。 前の方が読みやすかったという意見もありますが、頭から再読みをお勧めします。 USBドライバディレクトリ 32bit版: sdk\usb_driver\x86 64bit版: sdk\usb_driver\amd64 ブログ内の関連する記事 Android SDカードをFAT32に変更 Android sdcardディレクトリの取得 Android USB driver vista 64bit版 Android に音楽を転送してみる Android Dev PhoneをUSB接続してみる Share on Tumblr Tweet

Android mobile phone デル出して欲しい

イメージ
DellがAndroid Mobile Phoneを出すとか出さないとかの噂がありますが、1年ぐらい前に発表された写真があります。 Alienware という会社は、カッコいい??クレイジー??なPCを作っている会社で、DELLの子会社です。 こんなのが発売されたら、絶対に買う!! 元ネタの、 Dell’s Android Moile Phone ページ では、こんなの出してくるんじゃないぞーと書いてあり、だいぶ意見の相違がありますが… 1年も前の写真をなんとなく見つけて、面白くなって色々探していたら こんなのも見つけました。 あー欲しいよ、2台目でも3台目でも買っちゃう!! 1日で子供に壊される事間違いないですけどね Share on Tumblr Tweet

Android OS をリブートする方法

イメージ
昨日 Android OSをリブートするプログラムtReboot を公開しましたが、Android Market上のコメントで、「HOMEボタン+CALLボタン+POWERボタンを押す事でリブートできます」とのコメントが書きこまれてました。 Dev Phoneで試してみたところ、リブートできました。 ソフトを作る上で、色々と調査をしたのですが、発見できなかったとは、Android OSの情報を取得するのは、難しいのを再実感しました。 tRebootではrootパミッションが必要となりますので動作するOSのバージョンが限られてきます。 HOME+CALL+POWERでの実装も試して、そちらでうまくいけばロジックの変更をしたいと思っています。

Google Android リブートプログラムtReboot公開

イメージ
Google Androidをリブートするソフトを公開しました。 先日の記事、 Android Rebootするアプリケーション にて、DroidSans Tweak Tool にてリブートできて、テストや動作確認時に便利ですという記事を書きましたが、このアプリは起動後スクロールをする必要があり、それだけでも面倒くささを感じたので、単体で動くソフトを作ってもらいました(社内で)。 惜しいのは、ほとんど使われる事のないソフトなのに、アイコンのクオリティが高いという事…. 非常にもったいない気がしています。 ダウンロードは、 AndroidソフトウェアtReboot のページかAndroid Market – Toolsにて可能です。 注意)リブートにはroot権限が必要ですので、Google DevPhone等でしか動作しません。 Share on Tumblr Tweet

Android AlarmManager 5 システムブロードキャスト

イメージ
AndroidのAlarmManagerの最後の記事 AlarmManagerを使用した時は、システムの時刻が変更された時に通知されるブロードキャストにも注意する必要がある。 特にAlarmManager#setを使用している場合は、Android Phoneの時刻がユーザもしくはシステムにより変更が加わった場合は再設定をする必要がある。 (AlarmManager#setRepeatを使用していても、ロジックによっては必要となるでしょう) 投げられるブロードキャスト android.intent.action.TIME_SET ユーザにより時刻が変更になった時 android.intent.action.TIMEZONE_CHANGED ユーザによりタイムゾーンが変更になった時 先日の記事に書いた、BOOT_COMPLETEDの記載も含めAlarmManagerを使用したときは、以下のような定型的な記述をManufestファイルに追加することになります。 <receiver android:name=".ReceiverInitAlarm"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.intent.action.TIME_SET" /><action android:name="android.intent.action.TIMEZONE_CHANGED" /></intent-filter></receiver> 私の場合は上記のように記載して、ReceverInitAlarmという名前のBroadcastReciverにて、ブロードキャストタイプを調べ分岐して処理を行っています。 ブログ内の関連する記事 AlarmManager 1 Android でCronみたいなことをするには AlarmManager 2 定期的な感覚で繰り返し処理をするプログラム Android AlarmManager 3 サービスでの受け取り Andro

Android RSSReader OPML対応

イメージ
Android上で動作するRSSReaderです。 今回OPMLに対応しました。 これにより、Android上で手打ちによってURLを打つ必要がなくなります。 現在PC等で使用しているRSSReaderからOPML形式でURLを出力し、適当なサーバーにアップしてインポートすれば、現在購読中のRSSが総てAndroid上に転送されます。 これに伴い、以前は、「Recomendation sites」メニューでインサートしていたURLリストを外出ししています。 (メニュー名は、「android sites」に変更をしました) android feeds参照ファイル 上記ファイルを参照していますので、OPMLを手打ちで作成する人は参考にしてください。 ダウンロードは、AndroidMarketか、 タオソフトウェアのRSSReader のページから可能です。 Share on Tumblr Tweet

Android AlarmManager 4 アラームが消えるとき

イメージ
AndroidのAlarmManagerでは、以下の時設定したアラームが自動的にクリアされる。 アプリケーションがアンインストールされた時 アプリケーションがバージョンアップインストールされた時 電源オフされたとき 上記3点についての調査結果 アプリケーションがアンインストールされた時 この時は、AlarmManagerがアンインストールを自動的に検知し、以後ブロードキャストやサービスの呼び出しを行わない 特に問題なし アプリケーションがバージョンアップインストールされた時 この時もAlarmManagerにより自動的にアラーム設定が消えてしまうが、ユーザにとっては、アプリケーションの使用を継続するにも関わらず、設定が消えてしまうという問題が発生する。 色々調査を行ったが、この問題は現在解決できない。 電源をオフにした時 電源をオフにしたときもアラーム設定が消えてしまう。 電源オフ – 電源オンにしたときに自動的に再度アラームを設定するには、システムから投げられる、Intent.ACTION_BOOT_COMPLETEDのブロードキャストを受け取ることで処理を行う。 public class AlarmInitReceiver extends BroadcastReceiver {/*** Sets alarm on ACTION_BOOT_COMPLETED.*/@Overridepublic void onReceive(Context context, Intent intent) {if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {//ここでアラームの再セットを行う}}} 注意点としては、PCとは異なり、携帯電話で電源をOFFにするということはあまりないということである。 Androidで電源をオフにする時は、何か問題が発生した(何かのソフトウェアがハングした、Androidの動作がもっさりとした)時が考えられる。再起動をした時に自動的に再設定をしてしまうのは、便利なのか、お節介なのか、判断が分かれるところである。 ソフトウェアの性質にもよるが、SDKドキュメントにも書かれているように、なるべく再設定を行わないのが望ましい。 ブログ内の関連する記事 AlarmManager 1 Android でCronみた

Android AlarmManager 3 サービスでの受け取り

イメージ
Androidで、定期的にプログラムを動かしたい時は、AlarmManagerにて、BroadcastReciverかServiceを起動させます。 前回のアーティクルでは、BroadcastReciverを用いましたが、AlarmManagerからの呼び出し以外でプログラム内部から直接呼出したいこともあります。 自分で受け取るBroadcastを投げても実現はできますが、サービスとして実装した方が自然です。 例えば、RSSReaderでは以下のような2種類の方法でサービスを起動しています。 指定した感覚でFeedの取得 メニューのリフレッシュコマンドによるFeedの取得 Serviceに関しては、ApiDemoプログラムに簡単なサンプルプログラムがあるのでそちらを参照してください。 Serviceの実装 public class FeedService extends Service {@Overridepublic void onCreate() {}@Overridepublic void onStart(Intent intent, int startId) {//パラメータ取得    Bundle extras = intent.getExtras();    doSomething();}} 実際には、作成するプログラムにより、スレッドを作成してその中で処理をします。 ブログ内の関連する記事 AlarmManager 1 Android でCronみたいなことをするには AlarmManager 2 定期的な感覚で繰り返し処理をするプログラム Android AlarmManager 3 サービスでの受け取り Android AlarmManager 4 アラームが消えるとき Android AlarmManager 5 システムブロードキャスト Share on Tumblr Tweet