今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Android

Camera.open()したのにNullPointerException

これまで問題なく動作していた、カメラを使うアプリをAndroidStudioから起動したら、起動してすぐにぬるぽが発生。 AndroidStudioからではなく、いままでのアプリを起動すれば動くから、AndroidSDKをアップデートした影響で動かなくなったっぽい。 Camera c …

VideoViewでOnClickイベントを取得できない

動画再生中のVideoViewがタップされたら一時停止しようと思って、setOnClickListner()でイベントを取得するようにしたけど、まったくイベントを取れない。ぐぐってみた。≫ android の VidewView で onclick イベントが飛ばない - プログラマのページOnTouch…

ソフトウェアキーボードが非表示になったら画面が崩れる

Activityで文字入力するときにDialogFragmentを表示して、その中で入力させるプログラムを作った。 Activity内の一部に画像を表示しているためなのか、DialogFragmentでソフトウェアキーボードを表示するまでは正常に動くけど、ソフトウェアキーボードが非表…

Google Oauth2 で GoogleAuthException: Unknown が再発した

この前、「GoogleAuthUtil.getToken()でGoogleAuthException: Unknown が発生する問題を解決できた」ってのを書いたけど、またまた再発した。再発した原因は、Googleのアカウント権限のページで、該当のアプリのアクセス権を取り消したから。再認証のテスト…

GoogleAuthUtil.getToken()でGoogleAuthException: Unknown が発生する問題を解決できた

この前、GoogleAuthUtil.getToken()でドはまりしたって記事を書いた。GoogleAuthUtil.getToken()でGoogleAuthException: Unknown でドはまり中 - 今日の役に立たない一言 − Today’s Trifle! − private static final String scope = "oauth2:" + Scopes.PLUS_…

GoogleAuthUtil.getToken()でGoogleAuthException: Unknown でドはまり中

Qiitaにあるコードとほぼ同じコードで動かそうとしてるわけで。AndroidでのGoogle Account OAuth認証方法 - Qiita private static final String scope = "oauth2:" + Scopes.PLUS_LOGIN + " " + YouTubeScopes.YOUTUBE; private void auth() { AsyncTask<Void, Void, Boolean> tas</void,>…

MediaRecorderで録画ができない問題を解決

Androidで、MediaRecoderを使って録画するアプリを作ってたんだけど、録画を開始しようとするとエラーが発生して録画ができなかった。LogCatを見ると、start failed: -19 ってメッセージが出てるんだけど、原因がわからん。 10-07 13:16:34.053: D/Hogehoge(…

Android で Google Cloud Endpoint を使う時のデバッグ版とリリース版の Client ID を切り替える方法

先に書いた、Google Maps M2 API for Android では、デバッグ版とリリース版で同一の API key が使えたけ。だけど、Cloud Endpoint の Client ID を設定するところは、複数の SHA1 を書けるようになってないので、別々の Client ID を生成するしかない。 な…

Google Maps V2 の API key はデバッグ版とリリース版の両方に使える

AndroidアプリでGoogle Maps V2 API を使うには、AndroidManifest.xml の中に、API keyを記述する必要がある。 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" /> デバッグ版とリリース版で API key を使い分けるにはどうすれば簡単にできるのかわからずにぐぐってたら、同一の API key でデバッグ版とリリー</meta-data>…

GCMの実装中のIllegalAccessExceptionに悩まされた件

AndroidでGCMを受け取るためのサービスGCMIntentServiceを実装して試しに動かした時に、IllegalAccessExceptionが発生してた。 java.lang.IllegalAccessException: access to constructor not allowedその少し上を見ると、 Could not find class android.app…

Failed to create secure container smdl2tmp1 でAndroidアプリをインストールできない

新しいAndroidアプリを作って、Android2.2.1の端末で実行しようとしたら、こんなエラーがでて実行できなかった。コンソールのキャプチャ画像。 こちらはLogCatの内容。 Failed to create secure container smdl2tmp1 Failed to create container smdl2tmp1 a…

Google Playのアルファ/ベータテストを使ってみた

Google Play Developer Console でAndroidアプリのアルファ/ベータテストができるようになってたので、使ってみた。To make a great app, it’s important to get feedback from users early and often. Google Play Developer Console lets you test your ap…

Viewを画面の一番下に配置する方法

OK/キャンセルとか保存など、画面の一番下にボタンを配置したい時がある。 そのような場合のレイアウトの書き方。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > // 上の方に配置するViewを書く </linearlayout>

GoogleのMobile Backend Starterのデモを動かしてみた - その2

昨日に引き続き、GoogleのMobile Backend Starterのデモを動かしてみる。今回は Getting Started の次に書かれてある Adding Google Cloud Messaging to the Sample というのを試してみる。Google Cloud Messaging(GCM)というのは、リアルタイムにサーバー…

GoogleのMobile Backend Starterのデモを動かしてみた

いまどきのモバイル アプリケーション開発では「クラウドとの連携」が欠かすことができません。とはいっても、データベース アクセスやユーザー認証といった定番の機能を利用するためだけに毎回サーバーを自分で立てたりサーバー側のコードをひと通り書いた…

EclipseのAndroidプロジェクトでRクラスが生成されない件

昨日、ひさしぶりにEclipseでAndroidプロジェクトを作成したら、何も新しいコードを書いたわけでもないのにエラーが出てた。genの中にあるはずのRクラスが生成されていない。プロジェクトをクリーンしてビルドしなおしても生成してくれないし、res内のxmlを…

Activityのソース巨大化を防止するには

Androidのアプリケーションを作っていると、Activityのソースが巨大化しやすい。その最大の理由はサンプルソースに有ると思う。世の中にあふれているサンプルソースとして書かれているコードのほとんど全部が、Activityのクラス内にコードを書いてしまってい…

Android SDKをバージョンアップしたらRが生成されなくなってビルド不能になった

(ノ`Д´)ノ彡┻━┻ 一昨日の夜、何気なくAndroid SDKをバージョンアップしてみた。そしたら、Androidのプロジェクトのうちのひとつがビルドできなくなってしまった。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = w…

AndroidからGoogle OAuthでプロフィール情報にアクセスする方法

AndroidからGoogle OAuthで情報を取得するときに、いろいろとうまくいかなくて試行錯誤したので、メモっとく。 OAuthのライブラリは scribe-java を使用した。 まず、ボタンをタップしてOAuth認証を開始しようとした時に NetworkOnMainThreadException が出…

Missing contentDescription attribute on image

レイアウトのXMLにImageViewに、今までは出てなかった [アクセシビリティ] Missing contentDescription attribute on image とかいう警告が出るようになってた。調べてみると、これはViewクラスから継承されているXML属性で、API Level4から存在しているらし…

JDK1.6と1.7でkeytoolの暗号化アルゴリズムが違う件

AndroidでMapActivityを使おうと思って、apiKeyを取得するためにkeytoolを使った。 生成されたフィンガプリントをGoogle Codeのサイトに貼りつけたら、やたら文字化けした画面に飛んでるし、apiKeyも取得できてないっぽい。 シェルに出てる文字列をよく見る…

開発中ライブ壁紙のアンインストール方法

Eclipseでライブ壁紙のサンプルを動かしてみたあと、それをどうやってアンインストールするのか分からなくて困った。 設定→アプリケーション→アプリケーションの管理で一覧を出してみたけど、いくら探しても見つからない。「すべて」にも現れない。Google Pl…

Androidの電話帳に勝手に大量登録される件

今日、Androidの電話帳を使ってて、「他」の部分を見てびっくりした。そこには膨大な数の連絡先が登録されてたから。 ざっとみたところ、以下に該当する人が登録されているように見える。 今までメールでやりとりしたことがある相手 Twitterでフォローしてい…

IS03のスクリーンショットのファイルにRead Permissionがない件

IS03は、HOME+電源でスクリーンショットを取得できる。そのファイルをGoogle+に投稿しようとしたら、アップロード途中で止まってしまう。ファイルが変なのかと思ってプレビューで開こうとしたら、Read Permissionがなくて開けなかった。だからアップロード…

Android SDKをバージョンアップしたら警告が出るようになった

昨日、Android SDKをバージョンアップしたら、AndroidManifest.xmlを何も更新しないで保存しただけで、警告が出るようになった。ひとつはこれ。 tag appears after tag タグのあとに を書くなということらしい。 タグの前に、つまりAndroidManifest.xmlの最…

続・Androidマーケットでアプリ内課金がキャンセルされる件

前に書いた話↓の続き。 ≫Androidのアプリ内課金が動かない件 - 今日の役に立たない一言 − Today’s Trifle! −Googleがアプリ内課金のサンプルとして配布してくれてるDungeonsすら動かないってどういうことやー!って思いつつ他のアプリも作ってるのでしばらく…

Sqliteでテーブルからランダムにデータを取得するには

他のDBだと rand() だけど、AndroidのSqliteだとrandom()らしい。 String sql = "select * from TABLE_NAME order by random() limit 20"; Cursor c = db.rawQuery(sql, null);

Android端末で動作が変なときは再起動してみるべき

今日、ランチに行ったときに、料理が出てくるまでにFourSquareでチェックインしようと思ったら、なぜかネットワークエラーでつながらない。アンテナも1〜2本で不安定なので、場所が悪いのかなーとか思ってた。≫satoshi's Michelin: インド料理 サンガムその…

Androidのアプリ内課金が動かない件

自作アプリでアプリ内課金が動かない件で、鉄道アラームの作者 @phytoncide_ さんに調査を協力してもらった。その結果、HTC EVO でも動かず。。。 とりあえずGoogleが提供してるサンプルDungeon を動かしてみることにした。 Dungeon をコピー パッケージ名を…

アプリ内課金で購入しても勝手にキャンセルされまくってテストができない件

作成中のAndroidアプリでアプリ内課金を使おうとして実装はできてるんだけど、実際にアプリから購入しようとすると「お支払いを承認しています」のところでタイムアウトになって、購入がキャンセルされてしまう。 購入したユーザーに届くメールには、 お客様…