[Android] 画面の向きを判断する

Androidには画面を自動的に回転する機能がついていて、
端末を横に傾けると、画面も横向きに切り替わるようになります。

※ 自動回転は設定でOn/Offを切り替えられる

アプリ側でも、当然縦画面用の処理と横画面用の処理を切り替えたい場合がでてきます。
そんなとき、今端末は縦向きか横向きかを判定する処理を使用して、
それぞれの処理を分岐させることができます。


Configuration config = getResources().getConfiguration();

if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 横画面の処理
}

if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
// 縦画面の処理
}

if (config.orientation == Configuration.ORIENTATION_SQUARE) {
// 正方形画面の処理
}


ORIENTATION_SQUARE?正方形?
そんな端末あるんですかね。あまり使われないような気がします。

個人的には、GridViewのカラム数などを動的に縦と横で切り替える場合などで
この、分岐処理を使用しています。

[Android] タイトルバーを非表示にする

アプリを作っていると、タイトルバーが邪魔になり、
非表示にしたいことがシバシバある。

20120425_1.jpg

20120425_2.jpg


そんな時は、XMLにテーマの"style/Theme.NoTitleBar"を指定してあげればよい。
以下は、activityタグに指定する場合。

<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >


タグに指定してもOK。
アプリ内のすべてのActivityに指定したい場合は、こちらの方が楽だと思う。


Error generating final archive: Debug Certificate expired .....

「Error generating final archive: Debug Certificate expired on 12/04/19 23:34」

こんなエラーが出てきて実行できない。。。

デバッグ用の証明書の期限切れのようです。
なので、該当するするファイルを削除して再生成してあげれば、
エラーは解消されました。

・以下のファイルを削除する
  C:\Users\ユーザ名\.android\debug.keystore
・プロジェクトをクリーンする


※debug.keystore は自動で生成されました

[Android] EditTextのスタイル

今まで、あまり気にしていなかったのですが、APIレベル11以降から
EditTextのスタイルが変わっているようです。

■SDKバージョン10
device-2012-04-12-070436.png

■SDKバージョン11
device-2012-04-12-071001.png

切り替えは、Manifestファイルでターゲットバージョンの指定をかえるだけ。

<uses-sdk android:targetSdkVersion="10" />

↓↓↓
<uses-sdk android:targetSdkVersion="11" />


PCからハードウェアキー入力するアプリケーションを作成

フューチャーフォンのようなキー配置で、PCからAndroid端末に
ハードウェアキーイベントを通知するアプリケーションを作成してみました。
※ADBのパスを環境変数に登録しておく必要があります
※USBデバッグで接続しておく必要があります

adbコマンドを使用したキーイベントの通知方法は以下で記載しています。
[Android] adbコマンドを使ってキーイベントを通知する

で、作成したのは以下。
hwkey_sample.png

MFCで作成し、ボタンを押下するとsystem()関数を呼び出して、
adbコマンドを実行して端末にキーイベントを送るようにした。

ボタンを押下する度に一時的にコンソール画面が
起動しては消えるのがちょっと目ざわりなところ。。。

[Android] adbコマンドを使ってキーイベントを通知する

Androidの端末には色々なものがあり、中には

AQUOS PHONE slider SH-02D

のようにフィーチャーフォンみたいなものもあります。


ホームキー、メニューキー、バックキーなどは
多くの端末に実装されていますが、十字キーなどがある機種は
めずらしいのではないでしょうか。


エミュレータやIMEのSimejiにもハードキーが実装されているが、
全てのキーコードは実装されていないので、かゆい所に手が届かないことが。

そんな時は、adb shellのコマンドでキーイベントを送ってあげればよい。



adbのパスさえ通っていればあとは、コマンドプロンプトから
簡単にイベントを発行できる。


adb shell input keyevent 82


※ "82"はKEYCODE_MENU(メニューキー)のイベント。

キーイベントにどのような物があるかは、"こちら"を参照。


■動作確認

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Toast.makeText(this.getApplicationContext(), "KeyCode: " + event.getKeyCode(), Toast.LENGTH_SHORT).show();
return super.dispatchKeyEvent(event);
}


ためしに、dispatchKeyEvent()で通知されてきたキーイベントの
キーコードをトーストで表示してみた。
キーイベントをトースト表示

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter