AsyncTaskLoaderでのエラー処理 最近Androidで非同期処理を実行する場合、AsyncTaskLoaderを使用するのが一般的です。 HTTP通信等、非同期処理が必要な際によく使用していますが、 AsyncTaskLoader内で発生した例外は、外側のクラスでtry-catchを使用して捕まえることができません。 そのため、エラーハンドリング方法に悩んだ末にここで解決したので、その方法を紹介します。 AsyncTaskLoader まずはシンプルなAsyncTaskLoaderを見てみましょう。 次の例は結果をStringで返すだけのシンプルなものです。 public class AsyncService extends AsyncTaskLoader<String> { @Override public String loadInBackground() { //ここでバ
AndroidのHandlerクラスは別スレッドからUI部品操作を用いる際に、よく使われる。Androidの場合はUIスレッドからでないとUI部品を操作できないという制約がある。どのサイトを見てもUIスレッドへイベントを送るための仕組みとして語られている。 いやいや、それは事実だが、それだけでない。 Handlerクラスはスレッド間通信のための仕組みである。もっと正確に言うと、Handlerインスタンスを生成したスレッドへイベントを送るための仕組みなのである。当たり前だと思う人も多いかもしれないが、多くの人はこのことを理解できていない。 ソースレベルで説明してみる。よく書かれるソースは以下のような感じである。 Handler handler = new Handler(); // (1) handler.post(new Runnable() { @Override public void
たとえば、非同期処理からUIスレッドに描画したくて、こんなコードを書いたとする。 private mHandler = new Handler(); private void sayHello() { mHandler.post(new Runnable() { @Override public void run() { Toast.makeText(this, "Hello?", Toast.LENGTH_SHORT).show(); } } }; Handlerにpostしたメッセージをハンドルしないのならば、Activity#runOnUiThread(Runnable)に置き換えたほうがスッキリ。 private void sayHello() { runOnUiThread(new Runnable() { @Override public void run() { Toast.
メニュー>概要>ライセンス の中にあるアレですね。 なんか良いUIライブラリ見つからないかなーと思って探し始めたら、案外と色々入ってて心折れそうになった。 どこで使ってんだよそれ感高い奴もかなりありますし、明日からでも使ってみたいJoda-Timeのようなライブラリもありました。コピーレフトで仕方なく書いてあるんだろうなあ的な、内部ライブラリっぽいものは省いてあります。 さあ、頑張ってみていきましょう。 AChartEngine https://code.google.com/p/achartengine/ グラフとか書ける系のアレ。 Application Crash Reporting for Android http://acra.ch/ 通称ACRA。クラッシュレポートをPlayストアとは別に収集する系のアレ。 某秋田の地ビールとは関係ありません。 ActionBarSherloc
では端末にインストールされていない証明書をandroidアプリケーションで利用することは不可能なのだろうか? 否。 具体的にはHTTPS(SSL)通信で使用するソケットを生成する際に、通常使われるCA証明書の代わりに自ら用意した証明書を使って生成してやれば良い。コーディングに関してはandroid上の標準のHTTPクライアントであるApache HttpClientを使っても、javax.net.ssl.HttpsUrlConnectionを使っても実装できるが、後者はアドホックなコーディングで不具合を回避する必要があるのでApache HttpClientを使う方がお勧めだ。 以下、その手順。 使用するCA証明書からBouncy Castle形式のキーストアを作成する androidで使用するCA証明書はBouncy Castle形式(.bks)のキーストアに格納することになっている。な
アプリ開発者、ゲーマーに嬉しい画面録画機能 アプリケーションを開発していて、ゲームをしていて「あぁ今の動き録画できたらな〜」なんて感じたことはありませんか? そんな願いを簡単に叶えてくれる機能が「Android4.4」で追加されました! これまでも画面を録画する方法はありましたが、root化しなくてはいけなかったり、もっさりカクカクしていたりイマイチすっきりしない感じでした。 そこで、今回はscreenrecordを使ってAndroidデバイスの操作を録画する方法を解説したいと思います。 重要なポイント 録画可能最大時間3分 音声は記録されません でも、高画質で録画できます! 使いどころ アプリケーションのテストでの使用はもちろんのこと、使用方法や機能などの解説をするチュートリアルムービーやプロモーションムービーの制作に役立つこと間違いなし。 言葉だけじゃ信じてもらえない神プレイも高画質で
Xtendroid is a DSL (domain-specific language) for Android that is implemented using the Xtend transpiler, which features extension methods and active annotations (edit-time code generators) that expand out to Java code during editing or compilation. Active annotations, in particular, make Xtend more suitable for DSL creation than languages like Kotlin or Groovy (e.g. see @AndroidActivity). Xtendro
以前のエントリで「ContentProvierとCursorLoaderとFragmentを使ったサンプルを作ってみた」 というものを書きました。 その時にListViewにセットしたアダプターは「SimpleCursorAdapter」という便利なクラスを利用したのですが、 リストを色々とカスタマイズしたいこともあると思います。 そこで、Cursorを利用してデータをセットすることができる「CursorAdapter」クラスを拡張して利用するように書き換えてみました。 Database周りは上記エントリのソースと変わりません。 上記のエントリではリストをクリックするとサブ画面が表示されましたが、このサンプルではサブ画面はナシです。 githubのソースはこちらです。ダウンロードはこちらです。 データを読み込む側はCursorLoaderを使用してDBのデータをCursorに取得したらon
Android - ContentProviderとSQLite 何故ContentProviderを使用するのか コンテンツプロバイダ(ContentProvider)と言えば、他アプリとのデータをやり取りをする為の仕組みであり、SQLiteを使用する為の最善の方法として知られているが、 業務でこれを使用している場面を見ることはかなり少ない。何故ならSQLiteOpenHelperを直接使った方が遥かにシンプルで分かり易いからだ。 あと、「他アプリとのデータのやり取り」というニーズが少なく、使用する魅力に乏しいように思える。 筆者が実際に業務で見たSQLiteの取り扱いは以下のようなものだ。 SQLiteOpenHelperをextendsしSingletonに保ちつつ直に使用する(筆者はこれだった) DAOパターンを使用する(SQLの入力・出力用のJavaBeansを作成し、それぞれ詰
画面の左側にオーバーレイでアプリの主なオプションを表示するパネル。 通常は隠れていて、画面の左端からスワイプするか、トップレベルにいるならアクションバーのアイコンをタップすることで表示される。 http://developer.android.com/design/patterns/navigation-drawer.html より Navigation Drawer を使う前に、Navigation Drawer デザインガイドにあるこのパターンのユースケースとデザイン原則をきちんと理解すること。 Drawer Layout を作成する support package にある DrawerLayout を利用する。 DrawerLayout をルートビューとし、その中にメインのコンンテンツを表示するビューと、NavigationDrawer として利用するビューを入れる。 <androi
Two weeks ago I got the task to establish TLS secured connections via certificates to a service endpoint. I thought it’s not a big deal, because the endpoint already uses an EV certificate from a trusted CA (SwissSign) in Switzerland. Therefore I shouldn’t have to worry that the certificate would be considered as untrusted so I don’t have to import it to the trusted certs in the Java key store e
Xperia GX・SXでも考察していますが、Xperia Zではいろいろ消せるもの消せないものが入れ替わったので改めて考察します。 ICS以降はアプリを「無効化」することができ、裏で勝手に通信したりリソースを消費したりを防ぐためにも自分が使わないアプリ/サービスは無効化すると更に快適になります。 ずっと前からですが、私はドコモ関連サービスは使わない(使いたくない)のでその関連はバッサリと無効化しています。今回は何を無効化したかをまとめてみます。 無効化するには ホーム画面>アプリドロワ(真ん中の「田」ボタン)>設定>アプリ>すべて(タブ)を表示させます。 無効化するアプリ一覧 現時点で無効化したアプリ一覧です。 無効化して動作がおかしくなったら単純に「有効化」するだけです。Xperia Zの動作が本格的におかしくなるようなアプリ類は無効化することができないため、各自使いながら試行錯誤し
Migrating from Eclipse (Eclipseからの移行)の手順に従って既存のAndroidプロジェクトをAndroid Studioに移行してみたいと思います。 全体の流れ 既存のAndroidプロジェクトのAndroid Studioへの移行はとても簡単です。 ADT pluginをversion22以上にする EclpiseでGradle用ビルドファイルをエクスポートする Android StudioでAndroidプロジェクトをインポートする これだけです。但し、Android Studioはversion0.1のpreview版です。バグも沢山あります。本格的な移行はまだまだ先になると思いますが、今後AndroidプロジェクトのビルドシステムとなるGradleなどに慣れる為に触っておくといいと思います。 ADT pluginをversion22以上にする まずはE
いつからか知りませんが、Google Playの説明欄でいくつかのHTMLタグ*1が有効になっていました。 HTMLタグ とりあえず試してみたタグを列挙 利用可能 <b> <i> <u> <font> <a> 利用可能だが使わないほうがいい <h1>〜<h4> ページ上の他見出しと被るし、上下に入る余白が思いの外おおきい 利用不可能 <ul> PCサイト上では表示されますが、アプリ上では表示されません <hr> PCサイト上では表示されますが、アプリ上では表示されません 実践 上画像がHTMLマークアップなし、下画像がHTMLマークアップあり(改行や「・」を付けちゃってますが)です。あった方が見栄えはいいけど、やり過ぎると見難いので適度な装飾が良いでしょう。 実際に変更してみたページはこちらで確認できます。 細かい話 HTMLマークアップすると問題ある? PCサイトとGooglePlayス
ついに本日Galaxy Nexusを購入しました♪ これまでじり貧でHT-03Aを使っていましたが、その性能の違いにかなり驚いてしまうほど高性能です。 何といっても、とにかくレスポンスが早い!さすがDual Coreですね。 まだ使い切れていないGalaxy Nexusですが、いつものようにPC (ウチはUbuntu) とadbで接続しようとして (30分ほど) ハマったのでメモを残しておきます。 何も考えずに、端末とPCをUSBで接続、端末側のUSBデバッグをON、adb devicesで接続確認してみると % adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached ???????????? no pe
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く