2013年12月27日金曜日

Mac OS X MavericksにInkspaceをインストールする

AndroidアプリのUIパーツを作りたいがIllustratorやPhotoshopは高くて個人では手が出ないのでInkspaceを使ってみることにしました。
Inkspaceを使うにはXQuartzのインストールも必要になります。

まずは ここからInkspaceの.dmgファイルをダウンロード。
2013/12/26現在の最新版は「10.6, Snow Leopard — Universal .dmg」とSnow Leopard用になっていますがMavericksでも動きました。

次にここからXQuartzの最新版をダウンロード。 以前はMacOSにX11が含まれていたが、いつの頃からか含まれなくなったので別途XQuartzを入れる必要がある。

InkspaceとXQuartzの.dmgを開いてそれぞれインストール。XQuartzのインストール後はOSの再起動が必要。
OS再起動後にInkspaceを起動するとX11の場所を聞いてくる。アプリケーション→ユーティリティの中にXQuartzがあるので選択。
その後、しばらく…いや結構待つとInkspaceが起動する。

よし、まずはアイコン作るぞ!

2013年12月24日火曜日

画面の輝度を変更する

Androidで画面の明るさを変更する方法を調べました。
現在のWindowの明るさを変更する方法とシステム設定を変更する方法の2種類を紹介。

1. 現在のWindowの明るさを変更する方法
この方法では現在のWindow(通常はActivity)の明るさのみを変更するので、ホーム画面や他のアプリに移動すると元の明るさに戻ってしまう。
LayoutParams.screenBrightness の値を読み書きする。値の範囲は 0.0〜1.0。
ただし、0.0を設定するとアプリの挙動がおかしくなる機種があるので注意が必要。
Xperia AXだと0.0にするとアプリが操作できなくなってしまいました。クラッシュしている訳でもなく不思議な挙動…。
Windowの明るさを取得
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    float value = lp.screenBrightness;
Windowの明るさを設定
    float brightness = 0.5f;        // [0.0-1.0]
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.screenBrightness = brightness;
    getWindow().setAttributes(lp);

2. システムの明るさ設定を変更する方法
上記の方法ではホーム画面や他のアプリに移動すると元の明るさに戻ってしまう。Settings.Systemの値を変更することで システム全体の明るさを変更可能。
システム設定を変更するためには、まず、AndroidManifest.xml にパーミッションの追加が必要。
    <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
その後、Settings.SystemのSCREEN_BRIGHTNESSの値を読み書きする。値の範囲は0から255で255が最も明るい。
システム設定の明るさを取得
    int value = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
システム設定の明るさを設定
    int value = 255;    // 0〜255の値を設定
    Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, value);
上記でシステム設定を変更してもすぐに変更が反映されず、ホーム画面や他のアプリに移動したときに反映される。
スライダバーで明るさを変更するアプリ等を考えると、スライダバー操作中に実際に画面の明るさを変えユーザにフィードバックを返した方がわかりやすい。その場合は、1.のWindowの明るさを変更する方法と合わせて使うことで、すぐにユーザにフィードバックを返すことができる。

Android OSバージョンとAPIレベルの対応表

AndroidManifest.xmlとかを書くときによく調べるのでメモ。

0S VersionAPI LevelCode Name
Android 4.419KITKAT
Android 4.318JELLY_BEAN_MR2
Android 4.217JELLY_BEAN_MR1
Android 4.116JELLY_BEAN
Android 4.0.3-4.0.415ICE_CREAM_SANDWICH_MR1
Android 4.0-4.0.214ICE_CREAM_SANDWICH
Android 3.213HONEYCOMB_MR2
Android 3.112HONEYCOMB_MR1
Android 3.011HONEYCOMB
Android 2.3.3-2.3.710GINGERBREAD_MR1
Android 2.3-2.3.29GINGERBREAD
Android 2.28FROYO
Android 2.17ECLAIR_MR1
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUT
Android 1.53CUPCAKE
Android 1.12
Android 1.01