署名付きAPKが作成できません

ようやく、Eclipse で android アプリのファイルが
作成できると思ったのですが
残念ながら、電子証明書が作成できません
この電子証明書がないとアプリのインストールができません
現在、使用している環境は
android 10.10 32bit
です
署名付きAPKが作成できなくなった
によれば
、ADTのバージョンが原因
もしくは
eclipse の入れ直しで解決することが多いようです
もっとも、Eclipse にこだわらないのであれば
Androidアプリケーションを公開するために:署名と配置の方法にあるように
端末から作成するという方法もあるようです
まずは、Android SDK のアップデートを行ってみます

アイコンと名前の設定

アプリの名前を変更するには
res/values/string.xml
の中にある
<string name=”app_name”>プロジェクト名</string>
の部分の プロジェクト名
のところを変更すれば、アプリの名前を変更できます
たとえば
Test1 というプロジェクトで作成しているなら
<string name=”app_name”>Test1</string>
となっているので、
これを
<string name=”app_name”>さんぷるあぷり</string>
とすれば、アプリ名前がかわります
Screenshot-2.png
Screenshot-1.png
ちなみに、string.xml の内容を書き換えるとアプリの名前が変わるのは
AndroidManifest.xml
の中にある
application タグの中の
android:label=”@string/app_name”
の記述によって、変更先を参照するようになっているからです
また、アイコンを変更するのなら
res/drawable-hdpi
res/drawable-ldpi
res/drawable-mdpi
の中に使用したいアイコンの画像ファイルをおきます
そして、Eclipse で
File > Refresh
を行えば、設定が反映されます
これも、
AndroidManifest.xml
の中にある
application タグの中の
android:icon=”@drawable/icon”
の記述により、画像ファイルを変更するだけで
アイコンを変更することが可能になっています

電話着信時のイベント処理

Androidi プログラミングのメモ
電話着信関連のイベントを処理するには
PhoneStateListener 関連を使用するらしい
「PhoneStateListener 電話」
で検索すると、いろいろ出てきます
さすがにアプリを携帯で実験するのはリスキーなので
まずはエミュレータで実行
参考サイトは
PhoneStateListenerを使って着信イベントを取得する
これを使えば、まずはエミュレータで実行して実験できます
もうひとつ興味深かったのが
電話番号・SIM・デバイスID・サービス・通信強度・基地局・電話コールの取得
こちらはソースが載っているので、
わかりやすいかも

複数のSDKバージョンへの対応

新しい機能を実装したアプリを作成すると
新機能がサポートされていない Android OS では動作しない
まぁあたりまえなんだけど
Windows 98 で Windows 7 の機能は使えないし
一応、新しいSDKでビルドしたアプリでも
最低限実行可能なSDKバージョンを指定しておけば
そのバージョンで動作はできるようです
バージョン指定には、Androidmanifest.xml に以下の文を追記します
<uses-sdk android:minSdkVersion=”4″></uses-sdk>
この4の部分がAPIレベルという
Android SDK に関連する数値です
ただし、この設定を行っても
インストールはできるけど、動作保障はできない
ということです
Linux に wine を入れて Windows アプリを起動しようとしても
うまくいくとは限らないというのと同じようなものです
Android 2.3 にしかない機能を
Android 2.1 で動かすと
強制終了のようになります
このため、リリースするときには
バージョンを考慮するか、もしくは切り替え機能を搭載することが
多いようです
これが Android 2.2 対応とかという表示がされる理由です
Android 2.1 とか Android 2.2 とかでわかりにくいときには
Windows 98, Windows ME ,Windows 2000
Windows XP Windows Vista Windows 7
というようにバージョンがあがったら
システムが変わるぐらいに考えてみるとわかりやすいです

Notification から Activity を呼び出しても履歴が残らないようにする方法

Notification からアプリを起動すると、どんどんバックグランドに
タスクがたまり、Back ボタンでアプリを終了してもなんども同じ
画面がでるというバグのような状態になる
この対処法は2つ
1 PendingIntent を生成する際に設定できるフラグで制御する「
2、AndroidManifest.xml の Activity の指定で1つしか起動できないようにする
どちらかというと
AndroidManifest.xml の中に記述したほうが楽
やり方は
Activity タグの中に
android:launchMode=”singleTask”
を追記すればOK

Android のパーミッションシステム

Andoid には、ユーザ定義のパーミッション権限があります
Linux をつかっているとよく目にします
この機能は、セキュリティ関連でつけられています
例えば、Android アプリが無断で端末にアクセスできないように
したりという設定です
この設定は
Android アプリの中の
AndroidManifest.xml
の中に
users-permission1 で定義します
この設定をしておくと
アプリをインストールするときに、ユーザに勧告するようです
エミュレータで実験したかったのですが
わからず、検索してもまだみつかっていないため
この機能についてはまだ検証できていません
英語のサイトになりますが
Manifest.permission
に一覧らしきものが載っています
ちなみに、一部紹介をすると
android.permission.READ_PHONE_STATE
電話の状態を読み取る

android.permission.INTERNET

完全インターネットアクセス
android.permission.RECORD_AUDIO
録音
となっています
もし、画像入りのものができたら、アップしてみます

androidの音響効果

Android SDK 2.3 で新しく audiofx (音響効果)が追加された
今回追加された音響効果は
 バスブースト
(低音を強調する機能)
イコライザー
(周波数特性を変更する機能)
リバーブ
(残響効果)
バーチャルサラウンド
(ヘッドフォンの仮想効果)
音のサンプルを取得する機能も追加されたらしいです
Visualizer クラス
を使うことにより、Windows Media Player でよくある
音に合わせて波紋がでるのをつくれるようです

XML編集モードでバージョン切り替え

Android アプリ開発の勉強をしています
今回、Android アプリを Eclipse で開発していて
XML 編集モードで少しわかりにくかったのでメモ
今回、 XML 編集モードで、GUIでパーツを配置しようとしたけど
なぜかパーツが見当たらないということがありました
原因ですが、非常に単純なミスで
Android のバージョンが 3.0 になっていました
このため バージョンを Android 2.3 に変更することで
無事に解決しました
Screenshot.png
今回から、できるだけ解説に画像をいれてみようと思います

Notification のフラグ設定

Notification には2種類あり
1、実行中を表す通知
2、メッセージ
となります
目的は違うけど、作成する手順はどちらも同じ
双方の切り替えは
設定項目のflags にフラグを設定すれば変更可能
ちなみに、以下が設定可能なフラグ
FLAG_AUTO_CANCEL
通知がクリックされると自動で通知を消去

FLAG_INSISTENT

通知がキャンセルされるか、拡張部分が開かれるまで
音をならしたままにする
FLAG_NO_CLEAR
通知を消去するボタンでも消去できなくする

FLAG_ONGOING_EVENT

実行中の部分に通知が表示される

FLAG_SHOW_LIGHTS

LEDを点灯するときに使用

Notification で設定可能な項目

続いて、Notification で設定可能な項目のメモ
テキストエディタにもメモはしていますが
オンラインにもバックアップの代わりにとっておけば
閲覧するときに役立ちます

audioStreamType

再生するAudio のタイプ
contentIntent
拡張部分をクリックした時に呼ばれるIntent

contentView

拡張部分をカスタマイズする場合に設定するView

defaults

音、振動、点滅のデフォルトの通知方法

deleteIntent

Notification が削除されたときに呼ばれる Intent
flags
動作を制御するフラグ
icon
ステータスバーに表示するアイコン

iconLevel

ステータスバーに表示するアイコンにレベルがある場合に設定

ledARGB

LEDの表示色
ledOffMS
LEDの点滅OFFの時間
設定はミリ秒

ledOnMS

LEDの点滅ONの時間
設定はミリ秒単位
Number
ステータスバーのアイコンに表示する数字

sound

再生する音楽のURI

tickerText

ステータスバーに表示されるときに一瞬表示されるテキスト
vibrate
バイブレーションのパターン
when
拡張部分の通知領域に表示される通知発生時刻