Android 4.4 でSDカードを読む

Android 4.4からSDカードを読み取るにはパーミッションの追加が必要。

AndroidManifest.xml

 

Android 4.1~4.3端末で「開発者向けオプション→USBストレージの保護」にチェックを入れると4.4と同様にパーミッションが必要となる。

 

 

カテゴリー: Android | タグ: , | コメントする

立体的なアクアボタンのチュートリアル

立体的なアクアボタンのチュートリアル。ここを参考に日本語訳。

Round Web 2.0 Button with a Metal Ring

 

続きを読む

カテゴリー: Gimp | コメントする

Android 4.4 におけるAlarmManager

Android 4.4(API 19)よりAlarmManagerの挙動が変わったらしい。4.4端末を購入して気付いた。

バッテリー消費を抑えるために登録されたアラームを個別に実行せずに、システムが判断してある程度まとめて実行するようになったようだ。例えば10分の間に複数のアラームがあったら、どこかのタイミングでまとめて実行するためにいくつかのアラームは指定した時刻には実行されないことになる。それがどれくらいずれるのかはシステムの状態によるのだろう。実機で確認したところ最大10分以上の遅延が発生した。

目覚ましアプリ等、正確な時刻に実行させる必要のあるアプリには致命的。

API 19以降で正確に実行させる場合は新しく追加されたsetExact()メソッドを使用する必要があるようだ。ただし、これは間隔指定ができないため、アラームが実行される毎に再度setExact()で次回アラームを登録するような処理が必要となる。

 

とりあえずの対応として「android:targetSdkVersion=18」にしておけば従来の挙動となるようだ。

 

参考

ドコモ資料

 

カテゴリー: Android | タグ: | コメントする

WebViewでGET/POSTの結果を表示する

GETの場合

 

POSTの場合

ただし、サーバ側でPOST元の制限をされていたら表示できない気がする。試してないけど。

 

 

参考

 

カテゴリー: Android, View | タグ: , , | コメントする

パッケージのアップデート時に処理を行う

アプリがアップデートされたタイミングで処理を行う。

※新規インストール時も動く。

 

・AndroidManifest.xml

※注意

その他のBOOT_COMPLETED等も同時に設定する場合は以下のようにintent-filterを分けないとPACKAGE_REPLACEDしか受信されない。

 

・レシーバ

すべてのアプリのアップデートを受信するため、自アプリの判定が必要。

 

カテゴリー: Android | タグ: , | コメントする

ある年月の日数(末日)を求める

うるう年も考慮されている。

 

注意点はcal.set(year, month, day);でday=1を与えること。

例えばdayに31日を与えると31日が存在しない月の場合に翌月の末日が取得される。

 

参考

 

カテゴリー: Android | コメントする

ローディング画面を表示する

処理中を表すローディング画面(ぐるぐる)を表示する。

 

参考

 

カテゴリー: iOS | タグ: | コメントする

ラベルを角丸にする

UILabelを角丸にする。

labelの背景をlabel.layer.backgroundColorで指定しているサイトがあったが、tableviewのセル上のlabelでlabel.layer.backgroundColorを指定するとセルをタップしたあと背景がクリアされる。

 

参考

 

カテゴリー: iOS | タグ: , | コメントする

Background Fetchで通信(iOS7以降)

Background FetchではNSURLConnectionは使用できないのでNSURLSessionを使用する

・ダウンロード結果を受け取るクラスを作成

MyDownloadDelegate.h

MyDownloadDelegate.m

 

AppDelegate.m

 

参考

参考2

 

カテゴリー: iOS | タグ: , | コメントする

Background Fetchで定期実行(iOS7以降)

バックグランドで定期的に処理を行う。(例えば更新チェック等)

ただし、何分毎や何時何分にといった指定はできず実行間隔はOSによって決定される。アプリの起動頻度等によっても変動するらしい。

また、バックグランドではNSURLConnectionは動作しない。代わりにNSURLSessionを使用すること。

 

・プロジェクトの設定

プロジェクト選択→Capabilities→Background ModesをON→Background fetchにチェック

・コード(AppDelegate.m)

 

・テスト

シミュレータで実行時はxcodeの

Debug→Simulate Background Fetch

で手動でBackground fetchを発生させることができる。

 

参考

 

カテゴリー: iOS | タグ: | コメントする