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

2013年9月24日火曜日

ListViewの要素の高さを固定する

AndroidのListViewの要素の高さを固定するには layout_height だけではなく、
minHeight も設定する必要がある。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:minHeight="60dp"
    android:orientation="horizontal" >
    ... 省略...
<LinearLayout>

2013年9月1日日曜日

Eclipseで補完が効かないときの対処方法

MacのEclipseでコード補完が効かなくなってしまった。

補完しようとすると「No Default Proposals」出て肝心の補完候補が出ない。
環境設定のキーバンドをいじっても改善せず。
 調べてみたところ eclipse の設定ファイルがおかしくなっているようでした。

対処方法:
workspace の「.metadata/.pluging/org.eclipse.core.runtime/.settings」フォルダにある
ogr.eclipse.jdt.ui.prefs」ファイルの
content_assist_disabled_computers
というパラメータをコメントアウト(行頭に # を付ける)。

Eclipse を再起動するとコード補完ができるようになりました。

2013年7月13日土曜日

Androidアプリのデジタル署名に必要な証明書の作成

Google Playにアプリを公開するためには apk ファイルにデジタル署名をする必要があります。
今回はそのデジタル署名に必要な証明書の作成方法を説明します。

keytool コマンドを使います。
下記の例ではエイリアス名 ash、有効期限10000日の証明書を作ります。
結果は ash.keystore というファイルに出力されます。

$ keytool -genkey -v -keystore ash.keystore -alias ash -keyalg RSA -validity 10000

キーストアのパスワードを入力してください:

新規パスワードを再入力してください:
 
姓名を入力してください。
  [Unknown]:  ash
組織単位名を入力してください。
  [Unknown]:  ash
組織名を入力してください。
  [Unknown]:  ash
都市名または地域名を入力してください。
  [Unknown]:  shinagawa
州名または地方名を入力してください。
  [Unknown]:  tokyo
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  jp
CN=ash, OU=ash, O=ash, L=shinagawa, ST=tokyo, C=jp でよろしいですか?
  [no]:  yes
10,000 日間有効な 1,024 ビットの RSA の鍵ペアと自己署名型証明書 (SHA1withRSA) を生成しています
    ディレクトリ名: CN=ash, OU=ash, O=ash, L=shinagawa, ST=tokyo, C=jp
<ash> の鍵パスワードを入力してください。
    (キーストアのパスワードと同じ場合は RETURN を押してください):  
新規パスワードを再入力してください: 
[ash.keystore を格納中] 
$

環境によって聞かれる内容が多少違うようです。上記はMacの例。

Eclipseでapkファイルを生成するときに上記ファイル(ash.keystore)を指定し、エイリアス名、パスワードを入力すれば署名されたapkファイルが作成されます。


2013年2月7日木曜日

Androidのハードウェアアクセラレーション設定

WebViewのAOS2.3.4だとサクサクなのにICS端末だと激重だったので調べてみた。

AOS 3.0以降からハードウェアアクセラレーションの設定が増えていてデフォルトでdisableになっているっぽい。有効にするには AndroidManifest.xml に android:hardwareAccelerated="true" を追加する。applicationやactivityタグに設定可能。

  <application android:hardwareAccelerated="true">
    ...
  </application>


のようにapplicationタグに設定するとアプリ全体に設定可能。

  <application android:hardwareAccelerated="true">
    <activity android:hardwareAccelerated="false">
  </application>



とすると、特定のアクティビティだけoffにすることも可能。






2013年1月27日日曜日

Sublime Text 2 で TypeScript のシンタックスハイライト

MSが公開している定義ファイルを使う。

Interoperability @ Microsoft MSDN Blogs - Sublime Text, Vi, Emacs: TypeScript enabled!

から Sublimeのアイコンをクリックしてzipをダウンロード。

zipの中に入っている typescript.tmLanguage をSublime TextのPackagesフォルダにコピー。

PackagesフォルダはSublimeの [Preferences] → [Browse Packages] で表示されるフォルダ。
Windows 7だと

C:\Users\[ユーザ名]\AppData\Roaming\Sublime Text 2\Packages

になっているっぽい。

Sublime Text 2を再起動すればOK!

・・・のはずが反映されない。
作成済みのファイルはなぜかハイライトが効かない場合があるようです。
新規にSublimeで作成したファイルは大丈夫。