投稿

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

Android エミュレータ 縦横固定

イメージ
Android G1ではキーボードを開くと、画面が自動的に回転する。 ゲームその他のアプリケーションで、画面を回転させないようにする必要がある時は、Manufest.xmlのActivityの設定に値を設定する。 Warekiをバージョンアップするために、この設定を追加した。 android:screenOrientation=”portrait” SDKの説明ページはこちら http://code.google.com/intl/ja/android/reference/android/R.attr.html#screenOrientation 横長が、landscape 縦長が、portrait ここまでは、ググればいろいろと情報は出てきてはいたのだが、この後はまってしまいました。 エミュレータは、landscapeモードで起動が可能です。 Eclipseの設定画面 これでlandscapeモードで起動するのですが、Warekiに、android:screenOrientation=”portrait”を設定して起動してみたところ以下のような画面に…. どうしてこうなるのか色々となやんだのですが、実機で動作確認をしたら問題なく動作しました。 Share on Tumblr Tweet

Android エミュレータを日本語環境にしてみる

イメージ
週アスブログ に、エミュレータで日本語環境にする記事が出ていた。さっそくためしてみた。 といっても、基本的にアプリケーション開発は、android-sdk-1.0_r2のエミュレータで行い、今回インストールしたイメージを使用したい時には別途起動できるようにするようにインストールを行った。 (環境変数の切り替えや、Eclipseの設定を変更しなくてもエミュレータの切り替え可能) Cupcake用のエミュレータを作成 C:\android\android-sdk-windows-1.0_r2\toolsディレクトリをコピーし、C:\android\android-sdk-windows-1.0_r2\tools_cupcakeディレクトリを作成。 イメージファイルをダウンロード し解凍(http://s3.amazonaws.com/nullwire/android_images_sdk1.5.zip) 含まれるファイル ramdisk.imgsystem.imguserdata.img 解凍された上記ファイルを、tools_cupcake\lib\imagesディレクトリに上書きコピー このまま、emulatorを起動すると、C:\Documents and Settings\ユーザ名\Local Settings\Application Data\Androidのユーザイメージデータを使用してしまう。このエミュレータでクローズした環境を構築するため、別イメージで簡単に起動できるようにショートカットを作成 emulator.exeのショートカットを作成 .ショートカット名をcupcakeに変更 ショートカットのプロパティ->リンク先を、C:\android\android-sdk-windows-1.0_r2\tools_cupcake\emulator.exe -data userdata-qemu.imgに変更 ショートカットによりemulatorを起動 C:\android\android-sdk-windows-1.0_r2\tools_cupcakeに、userdata-qemu.imgが作成されエミュレータが起動される。 以後は、Cupcake用のエミュレータを起動したいときは、このショートカットを使用する。 今までのエミュレータを使うときは従来どお

Android 日本語フォント

イメージ
Androidでどのような文字が使用できるかは、デバイスによるが、エミュレータでどのようになっているかを調べてみた。 TextViewドキュメント Typefaceドキュメント TypefaceのドキュメントではSANS_SERIF、SERIF、DEFAULT、DEAULT_BOLD、となっており、TextViewのドキュメント、normal,sans,serif,monospaceと一致していない。 このあたりきちんと定義しておかないと、今後実機が増えた時に混乱すると思うのだが…. 基本的な知識として以下をおさえる。 1.SANS_SERIFは、SERIFではないという意味なので、SANSとなる。 2.明朝体は、serifに分類される。 3.ゴシック体は、sun-serifに分類される。 4.monospaceは等幅フォント 分かりやすいように出力してみました。 上から、normal,sans,serif,monospaceの順で、各Typefaceに対して、normal,bold,italic,italic|boldを指定しています。 結論として、normalはsansとなっており、日本語に関しては、sans,serif,monospace総て変わりがなく同じ物が表示されます。(日本語フォントがあるだけましですが….) Share on Tumblr Tweet

Androidのエミュレータの電源を切る方法

イメージ
Androidの電源をOFFにして、その後ONにしたときは、BOOT_COMPLETED がブロードキャストされる。 このブロードキャストを受け取り処理するロジックを記述して、エミュレータで電源をオフしようとしたがやり方がわからなかったので調査したメモ。 1.エミュレータの左上の電源ボタンらしき物を押すと、反応はするが何もおこらず。 2.通話を切るボタンを長押しをすると、「Power off」ダイアログが表示され、最終的に以下の画面となる。 しかし、この後Power offするわけでもなくキャンセルもできずに、エミュレータを終了するしかなくなってしまう。 正解は、Power off / on は、エミュレータの終了、起動と同じ動作をする。 きちんと、起動時にBOOT_COMPLETED がブロードキャストされているのを確認した。 実際にコードを書いて動作検証をするときは、いちいちエミュレータの再起動をしていたのでは、効率が悪いし、デバック実行もできないので、adb shellでエミュレータに入り、以下のコマンドを使用する。 am broadcast -a android.intent.action.BOOT_COMPLETED Share on Tumblr Tweet

Android あぷぷ

イメージ
年齢早見ソフトが、Androidのオススメアプリ情報を毎日届ける、 Androidあぷぷ で紹介されました。 リールの細かい動作など、結構指摘されてしまいました。 現在、リールの上の方の画像が少しおかしくなる点や、タップした時に高速に移動してしまい情緒がない点など気になっておりますが、他のアプリの作成で手が回っていません。 干支に関しては表示する領域がないので、Toastでも使用して表示しましょうかね 年齢早見の紹介ページはこちら Share on Tumblr Tweet

Android アプリケーションの設定画面の作り方

イメージ
アプリケーションを作成すると、そのアプリケーションの設定画面が必要になる。 Activityを利用して独自に画面設計をしているアプリケーションをよく見かけるが、PreferenceActivityを利用することにより簡単に実装できる。 本当に簡単なチェックボックス程度のプレファレンスなら以下の短いソースコードとなる。 public class SettingActivity extends PreferenceActivity{protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.alarm_preferences);}} 上記で設定している、R.xml.alarm_preferencesは、/res/xml/alarm_prererences.xmlを用意して記載をする。 この、PreferenceActivityによって設定されたデータは、実機では、/data/data/jp.co.taosoftware.android.rssreader/に、shared_prefsというディレクトリが自動的に作成され、その下にxmlファイルがこれも自動的に作成される。 XMLの記載方法や、PreferenceActivityの使用方法は、Settingアプリケーションのソースを見ると非常にわかりやすい。(SDKのドキュメントはあとから読むぐらいで良い) ほんとに便利なので一度お試しください。 ブログ内の関連する記事 Android アプリケーションの設定画面の作り方 Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意すること Android SharedPreferences について Android DefaultSharedPreferences Share on Tumblr Tweet

Android RSSReader v1.04

イメージ
Android上で動作するRSSReaderをアップデートしました。 Android Marketの 「News & Weather」からダウンロードできます。 変更点 1.Clear browser cache機能を追加 2.記事一覧でimage … 等表示されていたのを修正 3.Google News等一部見れないサイトがあったのを修正 シンプルなRSSReaderを目指していますので、あまり手間はかからないだろうと思っていましたが Android SDKドキュメントが整備されていないので、調査事項が多くあり時間がとられてしまいます。 といっても、既に別のアプリケーションの開発に着手していたりするのですが…. ホームページはこちら http://www.taosoftware.co.jp/android/rssreader/index.html Share on Tumblr Tweet

Android Market でのAll Current and Future Locationsチェックボックス

イメージ
昨日、アンドロイドマーケットの仕様変更に伴い、RSSReaderの登録情報を、All Current and Future Locationsチェックボックスを外し、その他総ての国に対してチェックボックスを付けてみましたが、DevPhone上から見た限りAndroidMarket上から見えなくなりました。 知り合いからの連絡が来るまで気がつきませんでした。 現状では、All Current and Future Locationsチェックボックスは外してはいけない模様です。 Share on Tumblr Tweet

Android Market バージョンアップされました。

イメージ
アンドロイドマーケットからメールが来ており、「前にいったとおり、ドイツとオーストラリアとチェコとニュージーランドとポーランドを追加したからねー」と。。。 チェックしないと、これらの国では、利用可能にならないからとあります。(Android Marketで表示されないという意味でしょう) さっそくAndroid Marketを覗いてみると 以下の画像のように追加されてます。 疑問なのが、「All Current and Future Locations」チェックボックス 何も変更していない状態でこのチェックボックスが付いているわけですが、このチェックボックスが本来的な機能をするのであれば、わざわざメールで、くどくくどとチェックするようにと書く必要はないわけで…. 現在、AndroidMarketクライアント側には変更が加わっていないようなので、どのようになるかの調査可能なように RSSReaderは、各国をチェックを個別にチェック(「All Current and Future Locations」チェックボックスを外す) Warekiは、「All Current and Future Locations」チェックボックスのみを付ける にしておきました。 Share on Tumblr Tweet

Android ソフトのローカライズ方法

イメージ
アプリケーションのローカライズ方法のDraftが出たので一通り試してみました。 現在Draftの状況ではありますが、大きく変わることはないと思われます。 Localizing Android AppsのDraft https://groups.google.com/group/android-developers/web/localizing-android-apps-draft デモアプリのダウンロード ローカライズ手法を説明するために、デモアプリ(L10nDemo.zip)が用意されており、上記ドキュメントに記載されてあるリンクからダウンロードできます。 ダウンロードして実行してみました。特に記載することはなく、Locale情報を見てリソースを切り替えているだけのアプリケーションです。(しかし日本語リソースがないというのはいかがなものかと…) ちなみに、ロケール情報は以下のコードで取得します。 // fetch the display name for the current locale; a couple different waysString locale = getResources().getConfiguration().locale.getDisplayName();locale = java.util.Locale.getDefault().getDisplayName(); エミュレータのロケールを変えてみる エミュレータにshellで入り、以下のコマンドを打つだけです。 adb shellecho fr-CA > /data/locale;stop 5;start 5秒待って、エミュレータ上でデモアプリを起動すると、無事カナダに住むフランス人状態になりました。 注意としてこの手法は、エミュレータだけで動作をし、実機では動作しません、またこの手法は将来変更されるでしょう(GUIが付くのが普通でしょう)と記載されています。 アプリケーションの公開 アプリケーションを公開する時は、アプリケーションサイズを小さくするために、各リージョン毎にaptを作ってAndroid Marketに公開をする、とありますが、このあたりはどうなんだろうか?開発者の結局手間が増えるだけで、サイズはあまり変わらない気がします(グラフィックを多様しているソフトは除く

Android ローカライズ方法

イメージ
Androidソフトウェアのローカライズ方法は、文字列リソースの切り分け方法等仕組みは用意されているのだが、実機及びエミュレーターでのロケール切り替え方法がないため、対応しようがありませんでした。 Android Marketにて国情報を設定できるようになるとの事で、その流れかAndroid Developers Groupにローカライズ手法の記事が出ていました。 Android Developers Groupの記事 https://groups.google.com/group/android-developers/browse_thread/thread/10d6f4d9f27fcd8d Android SDKのドラフトドキュメントはこちら https://groups.google.com/group/android-developers/web/localizing-android-apps-draft 特に真新しい事はないが、エミュレータでのロケールの変更の仕方が記載されている。 "echo en-CA > /data/locale;stop;sleep 5;start" G1やDevPhoneでは出来ないとの事 まだ、試していませんが、動作確認できたらまたブログに書きたいと思っています。 Share on Tumblr Tweet

Android ブラウザキャッシュ

イメージ
先日公開した、RSSReaderでは、記事を表示するのに、テキストのみ表示のTextViewと、リンクされている画像も表示できる、WebViewの2種類を用意し設定で切り替え可能にしている。 WebViewの使用は、作り手としては、非常に便利ではあるが、いちいちネットワークアクセスにいくため、速度が遅い事、無用なパケットが発生するので2種類用意をした。 記事からリンクされている画像は、WebViewにより自動的に取得されるため、ローカルデータベースには格納しておらず、テキストのみを保存している。このためアプリケーションが持つデータサイズは、そんなに大きくならないはずだが、Home -> Setting からアプリケーション情報を見ると7Mにもなっていた。理由はWebViewが持つキャッシュ、このキャッシュは、ブラウザアプリケーションとは共有されず、各アプリケーションのディレクトリに作成される。 従って、なんらかの方法でキャッシュをクリアする必要がある。 jp.co.taosoftware.android.rssreader/cacheキャッシュの実体jp.co.taosoftware.android.rssreader/databaseswebview.dbwebviewCache.db webview.dbは、formdata httpauth coolies formurl password 等のテーブルを含む webViewCache.dbは、ページキャッシュ用DBでその実態は、cacheディレクトリに存在する。 キャッシュのクリアは、以下のコードで行う Context context = getContext();WebView view = new WebView(context);view.clearCache(true);view.clearFormData();view.clearHistory();CookieManager.getInstance().removeAllCookie(); ブログ内の関連する記事 android WebView loadData Share on Tumblr Tweet

android WebView loadData

イメージ
RSSReaderを公開後、特定のページが表示されない問題を発見した。 WebViewコントロールを使っているだけで特殊な事はしておらず。困っていたら Android-SDK-Japanにて、以下のコメントを発見した。 http://groups.google.co.jp/group/android-sdk-japan/browse_thread/thread/d3106138c873fe51# loadUrlを使えば問題がないのだが、loadDataを使うと、シャープやパーセントが表示されないバグがあるとの事でした。 回避策はないかといろいろ調査した結果、loadDataWithBaseURLを使用するとうまくいくことがわかりました。 動かなかった mWebView.loadData(“%%%%%”, “text/html”, “UTF-8”); を mWebView.loadDataWithBaseURL(“hogehoge”,”%%%%%”, “text/html”, “UTF-8”,null); としてもうまく動作します。 BaseURLがきちんと入れられるのであれば、きちんとしたものを入れたほうが良いですが。。。 ブログ内の関連する記事 Android ブラウザキャッシュ Share on Tumblr Tweet

Android RSSReader

イメージ
アンドロイド用RSSReaderを公開しました。 Android Marketから Application -> News & Weatherからダウンロードできます。 Emulaterへは、 RSSReaderのページ からダウンロードできますのでインストール可能です。 ごく一般的なRSSReaderですが、今後仕様やデザインを詰めていき使いやすくする予定です。 Share on Tumblr Tweet

Android 証明書違いでインストールできなくなった。

イメージ
実機(Android Dev Phone)に年齢早見がインストールできなくなってしまい、直すのに非常に苦労したので、そのメモ 原因がわかってしまえばなんてことないことですが、バージョンアップ公開をする前に、証明書付きの年齢早見をインストールするために、サーバーにapkを配置し、ブラウザで実機にダウンロード、インストールを行ったが、「Install fail」とだけ表示されインストールができなくなった。 試行錯誤した結果Dev PhoneをUSBで接続してデバック実行を行ったため、デバック用の証明書が付いたソフトウェアが入ってしまい、リリース用の証明書が付いたソフトウェアがインストールできなくなったのが原因と分かった。 また、ランチャメニューの、Applications – Manage applicationsでアンインストールでは完全にソフトウェアは削除されなく、証明書関連の情報は残る、総てを消すにはadb uninstallコマンドを使用する必要がある。 結局以下の方法で解決した。 (ランチャーでアプリを削除してしまった状態から) 1. USBでDev PhoneをPCと接続 2. adb install Wareki.apk(デバック版をインストール) 3. adb uninstall jp.co.taosoftware.android.wareki (デバック版をアンインストール) 4. android marketからWarekiをインストール リリース版がインストールできない状態になってしまったので、少しあわてしまいました。 Share on Tumblr Tweet

Android Market ソフトのバージョンアップ

イメージ
デザイナさんに頼んで、年齢早見をより綺麗にしてもらいましたので、Android Marketの調査も兼ねてバージョンアップをしました。 プログラムの変更 Version 1.10からVersion1.20 VersionCodeを2から3に変更 Version1.10と同じ証明書で証明書を付加 Android Marketへの登録 Android Marketにログインをし、バージョンアップするアプリケーションを選択 この時のURL( http://market.android.com/publish/Home#EDIT_APPLICATION:4302609001516744896)の最後の部分がアプリケーションID( MarketAppIdString) となる 表示されたアプリケーション情報の「Upload Upgrade」ボタンを押す(赤マル部分) ファイルをアップするフォームが出てくるのでファイルを指定 ファイルをアップすると自動的に以下のような画面が現れる バージョン番号が1.20になっているのがわかる。 「Save」ボタンを押すとアプリケーション一覧画面に戻る この状態で先のアプリケーションIDはマイナスになっています。 負の値はDraftIDらしいが、1日たってもマイナスのままです。 http://market.android.com/publish/Home#EDIT_APPLICATION:-109171874050895205 しかし、この状態でもG1から無事インストールできました。 とりあえずバージョンアップ公開終了です。 Share on Tumblr Tweet

Android 画像付きボタン

イメージ
Androidの年齢早見ソフトの今日ボタンは、何もデザインしておらず、浮いていたので気になっていた。 デザイナさんの時間ができたので、押された時のボタン画像と、通常時の画像を2枚用意して、綺麗な画像ボタンを表示するために、ソースの手直しをした。 簡単だろうと思っていたが、やり方を調べるのにかなり手間取ったので、ここにメモとして記載 時間がかかった敗因は、APIドキュメントから見ていき、ImageButtonクラスや、ToggleButtonクラス等を見て行ったりAPI Demoアプリを調べたり、Webでキーワード検索等をするなどの順で調べていったから、最終的に似たような事をしているアプリケーションのソースコードを見る事で解決した。 現状ドキュメントが整備されていないAndroid上でのアプリケーション開発では、似たような事をしているアプリケーションのソースコードを見て、その後APIドキュメントを参照するのが一番の近道という事をあらためて実感した。 以下ボタンの実装方法 ボタン通常画像と、ボタンを押した時の画像を2枚用意する。 drawable/today_button.pngdrawable/today_button_pressed/png xmlファイルを新規作成 drawable/today_button_stateful.xml 内容 上記の2枚の画像を指定 <selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@drawable/today_button_pressed" /><item android:drawable="@drawable/today_button" /></selector> ボタンに上記xmlを指定する。 <Button android:id="@+id/todayButton"android:background="@drawable/today_button_stateful&quo