FC2ブログ

技術系のブログ

ぺんたんの更新情報を配信してます。本家サイトにない情報が配信されることがあるかも 本家はこちら http://pentan.info/

スポンサーリンク

アプリケーションのログを見る方法

Android SDKにはログを見るツールが用意されています。

[参考記事] ログ出力する方法
[参考記事] ログをEclipseのビューに表示させる方法
[参考記事] コマンドプロンプトの文字コードを変える方法

DDMS
コマンドプロンプト adb logcat

続きを読む
スポンサーサイト
  1. 2012/03/04(日) 19:59:53|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

ターミナルで端末操作をする方法

AndroidはLinuxベースなのでLinuxと同様にターミナルでのコマンド操作ができます。

端末内から実行 Terminal Emulator

続きを読む
  1. 2012/03/04(日) 19:58:14|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

処理を一定時間停止させる方法

処理を停止させるにはsleepを使用します。
sleepはThreadクラスの配下に次のように定義されています。

時間の単位はミリ秒です。

public static void sleep(long millis)
throws InterruptedException
続きを読む
  1. 2012/03/04(日) 19:56:52|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Androidのlayoutで使用できるパーツの一覧 ビュー(部品)

[参考記事] よく使うUIパーツのプロパティ

テキスト

TextView
続きを読む
  1. 2012/03/04(日) 19:54:43|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

wrap_contentとfill_parentの違い

wrap_contentは内容の大きさ(文字列長)にあわせて大きさが変化します。

続きを読む
  1. 2012/03/04(日) 19:53:44|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

スタイルを使って属性を一括で管理する方法

layoutにはスタイルを使って、属性を別ファイルとして指定することができます。
スタイルを使用することで、一括で共通の属性の設定を行うことができます。
また属性値を一括で管理できるので、属性値を変更するときに1箇所で変更ができます。

[参考記事] テーマ機能を使ってアプリケーション全体にスタイルを適用させる方法

続きを読む
  1. 2012/03/04(日) 19:51:19|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

テーマ機能を使ってアプリケーション全体にスタイルを適用させる方法

アプリケーション全体のスタイルを指定する機能にテーマというものがあります。
スタイル同様にテーマも属性値を一括で指定する方法ですが、違うのがスタイルが要素それぞれで指定するのに対して、テーマは全体に指定します。

[参考記事] スタイルを使って属性を一括で管理する方法

テーマ用のファイルはスタイル用のファイルと違いはありません。
テーマ用とスタイル用で共通でも可能です。


[参考記事] Androidのlayoutで使用できるパーツの一覧 ビュー(部品)
[参考記事] よく使うUIパーツのプロパティ

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="CommonText">
    <item name="android:layout_width">300px</item>
    <item name="android:textColor">#00FF00</item>
    <item name="android:background">#ff0000</item>
  </style>
</resources>

テーマの適用方法

続きを読む
  1. 2012/03/04(日) 19:49:54|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Androidのソースファイルを入手する方法

Androidのソースファイルは公式にGitで公開されています。
ダウンロードからビルドまでの手順もサイトに掲載されています。

Downloading the Source Tree

Gitで公開されているため、入手にはGitクライアントが必要です。

Gitをyumでインストールする方法
Windows版TortoiseGit Gitクライアント
Windows から Git を使う方法

続きを読む
  1. 2012/03/04(日) 03:13:06|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Androidでマルチスレッド処理をする方法

Androidでマルチスレッド(マルチタスク・バックグラウンド処理)をするには次の方法があります。

[参考記事] UIを操作するのにhandlerを使う理由 thread WebViewCoreThread exiting due to uncaught exception

続きを読む
  1. 2012/03/04(日) 03:11:22|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

xmlファイルの開始タグと閉じタグは大文字小文字も同じにする

layoutやvaluesに使用されるxmlファイルは、XML形式で書きますが、このXMLの開始タグと閉じタグは大文字小文字も同じにする必要があります。
開始タグと閉じタグの対が同じでないと警告が発生します。

続きを読む
  1. 2012/03/04(日) 02:57:17|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

EclipseのビューをカスタマイズしてファイルエクスプローラやLogCatを表示する

Android開発プラグインをEclipseに組み込んでいる場合、ddms(Dalvik Debug Monitor)を立ち上げなくてもビュー領域にファイルエクスプローラやLogCatを表示させることができます。

[参考記事] EclipseでAndroidプロジェクトを作る方法
[参考記事] ログ出力する方法 アプリのステータスを確認する
[参考記事] アプリケーションのログを見る方法
[参考記事] コマンドプロンプトの文字コードを変える方法

続きを読む
  1. 2012/03/04(日) 02:56:11|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

UIを操作するのにhandlerを使う理由 thread WebViewCoreThread exiting due to uncaught exception

Androidではメインのスレッド以外はUI(画面表示機能)にアクセスすることができない。
このためほかのスレッドなどでUIにアクセスすると次のような例外が発生します。

[参考記事] Androidでマルチスレッド処理をする方法

W/dalvikvm(  646): threadid=17: thread exiting with uncaught exception (group=0x4001aa28)
E/AndroidRuntime(  646): Uncaught handler: thread WebViewCoreThread exiting due to uncaught exception
E/AndroidRuntime(  646): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
E/AndroidRuntime(  646):        at android.view.ViewRoot.checkThread(ViewRoot.java:2629)
E/AndroidRuntime(  646):        at android.view.ViewRoot.invalidateChild(ViewRoot.java:558)
E/AndroidRuntime(  646):        at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:584)
E/AndroidRuntime(  646):        at android.view.ViewGroup.invalidateChild(ViewGroup.java:2391)
E/AndroidRuntime(  646):        at android.view.View.invalidate(View.java:4742)

これをソースコードでみると

続きを読む

  1. 2012/02/27(月) 15:34:23|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Android実行時にError:ShouldNotReachHere() [hs_err_pid.log]

AndroidをEclipseで開発しているとき、実行すると次のようなエラーが起こることがあります。
このエラーが起こると、それ以降 同じエラーが発生してアプリの実行などができなくなります。

プロジェクトのディレクトリにhs_err_pidxxxx.logのようなログファイルが生成されます。

# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (classFileParser.cpp:3174), pid=3300, tid=4016
# Error: ShouldNotReachHere()
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode windows-x86 )
# An error report file with more information is saved as:
# C:\workspace\TestApp\hs_err_pid3300.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
続きを読む
  1. 2012/02/26(日) 23:48:46|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:1

layoutのbackgroundで透過(transparent)を指定する方法

Androidのlayoutを組むときに、背景色を透過(透明)にしたいときがあると思います。

[参考記事] Colorクラスでの色指定

CSSだとtransparentを指定すると透過になります。
しかしAndroidのbackground指定ではtransparentは使用できません。

続きを読む
  1. 2012/02/26(日) 23:31:05|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

WebViewで横の隙間を消す方法(スクロールバー領域を消す)

WebViewを使用すると、領域の右側に10ピクセル分の隙間ができます。


[参考記事] WebViewの設定一覧

これはHTMLの表示領域の隙間ではないので、HTMLを変更しても消すことはできません。
この隙間はスクロールバーが表示される領域なので、スクロールバーを消す指定をしないと消えません。

スクロールバー部分の隙間を消すには次の指定をします。

webView.setVerticalScrollbarOverlay(true);
続きを読む
  1. 2012/02/26(日) 23:22:21|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

WebViewの設定一覧

JavaScriptを有効にする

webView.getSettings().setJavaScriptEnabled(true);

[参考記事] ブラウザ(WebKit)からアプリへ処理を渡す方法

リンク先をブラウザにせず、WebView内でリンクさせる

続きを読む
  1. 2012/02/26(日) 23:21:07|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

最初に呼び出されるJavaファイル(Activity)を指定する方法

AndroidManifest.xml のactivityに最初に呼び出されるJavaファイル(Activity)が指定されています。

[参考記事] アプリ起動時にスプラッシュ画面を表示させる方法

<application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".TopApp"
    android:label="@string/app_name" android:screenOrientation="portrait">
  </activity>
</application>

ここで注意することは、アクティビティ名の前に .(ドット)が付くことです。

続きを読む
  1. 2012/02/25(土) 13:50:18|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

アプリ起動時にスプラッシュ画面を表示させる方法

アプリケーション起動処理中に表示する画像をスプラッシュスクリーン(Splash screen)といいます。
このスプラッシュ画面の実装方法ですが、iPhoneアプリと違いAndroidアプリでは標準でスプラッシュ画面を表示させるものはないので、単純に起動時に画面を表示させる動作を実装します。

まずはスプラッシュ画面のレイアウトのXML(splash.xml)を作成します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="centerInside"
    android:src="@drawable/splash"
    />
</LinearLayout>

ここでres/drawable/splash.pngの画像を全画面で表示させるように指定しています。

スプラッシュ画面用のアクティビティクラス(SplashActivity.java)を作成します。

続きを読む
  1. 2012/02/25(土) 13:47:01|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

画面解像度などディスプレイの情報を取得する方法

画面の情報を取得するにはDisplayクラスを使用します。
Displayクラスを使用することで次の情報を得ることができます。

widthPixels(width)
heightPixels(height)
xdpi
ydpi
density
scaledDensity
orientation
refreshRate
pixelFormat
などを得ることができます。

注意
ここで得られる画面解像度は画面の表示領域全てのためタイトルバーやステータスバーを含みます。

[参考記事] ステータスバーの高さを取得する方法
[参考記事] タイトルバーやステータスバーを非表示にする方法

続きを読む
  1. 2012/02/25(土) 13:35:43|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

ステータスバーの高さを取得する方法

Displayクラスを使用すると、画面の高さや幅を取得することができますが、これは画面全体のものです。
このためステータスバーの高さまで含みます。

ステータスバーの高さを得るメソッドなどは今のところ(Android2.3)存在しません。

おおよその目安

ldpi19px0.75
mdpi25px1
hdpi38px1.5
xhdpi50px2

表示領域の上部の位置を使用すると、ステータスバーの高さとなります。

[参考記事] 画面解像度などディスプレイの情報を取得する方法
[参考記事] タイトルバーやステータスバーを非表示にする方法

続きを読む
  1. 2012/02/25(土) 13:32:00|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

タイトルバーやステータスバーを非表示にする方法

タイトルバーやステータスバーを消すにはAndroidManifest.xmlに記述する方法と、javaソースファイルに記述する方法があります。

[参考記事] 画面解像度などディスプレイの情報を取得する方法
[参考記事] ステータスバーの高さを取得する方法

AndroidManifest.xmlに記述する方法

続きを読む
  1. 2012/02/25(土) 13:25:11|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

画像を拡大縮小する方法

Matrixクラスを使用する方法

Resources r = getResources();
Bitmap bmpSrc,bmpRsz;
Matrix matrix = new Matrix();

// 拡大比率
float rsz_ratio_w = 2.0;
float rsz_ratio_h = 3.0;
// 比率をMatrixに設定
matrix.postScale( rsz_ratio_w, rsz_ratio_h );
// 元画像
bmpSrc = BitmapFactory.decodeResource(r, R.drawable.image_file);
// リサイズ画像
bmpRsz = Bitmap.createBitmap(bmpSrc, 0, 0, bmpSrc.getWidth(),bmpSrc.getHeight(), matrix,true);
続きを読む
  1. 2012/02/25(土) 13:09:13|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

OSのバージョンと特徴

[参考記事] Androidのコードネーム

続きを読む
  1. 2012/02/25(土) 02:23:56|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

リソースファイルの設置場所と利用方法

res/xmlフォルダの1MB以上のxmlファイルは読み込めない
画像を解像度ごとに振り分ける方法(drawable、layout、valuesなどの修飾句)
国際化する方法(drawable、layout、valuesなどの修飾句)
res/drawableの画像を変更しても、変更が反映されない場合
assetsフォルダには1MB以上の非圧縮ファイルを設置できない

続きを読む
  1. 2012/02/25(土) 02:22:33|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Xperia(Sony Ericsson)のUSBドライバをインストールする方法

[参考記事] apkファイルをAndroid端末にUSB接続でインストールする方法 (開発者ではない人向け)

Android端末のUSBドライバーはSDKの拡張パッケージに含まれています。
[参考記事] Android SDK
[参考記事] USBドライバを入手する
SDKをインストールして、「Google USB Driver package」を追加インストールすると次の場所に展開されます。

C:\Program Files (x86)\Android\android-sdk\extras\google\usb_driver\android_winusb.inf

ただXperiaのUSBドライバーはこれには含まれていません。

続きを読む
  1. 2012/02/12(日) 18:59:27|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

AndroidアプリでTextViewに使用できるフォントの一覧

Androidアプリでフォントをアプリ側で変更するには、フォントファミリーの指定またはフォントスタイルの指定となります。

TextViewに独自フォントを使用する方法

フォントファミリーの種類は
DEFAULT
DEFAULT_BOLD
SANS_SERIF
SERIF
MONOSPACE

フォントスタイルの種類は
NORMAL
BOLD
ITALIC
BOLD_ITALIC

指定の方法は次のようになります。

続きを読む
  1. 2012/02/12(日) 18:35:43|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

apkファイルのインストール時に INSTALL_FAILED_INSUFFICIENT_STORAGE と出る場合

エミュレータでアプリ領域の容量を変更する方法

アプリをapkファイルでインストールするときに、次のように出てインストールできないことがあります。
エミュレータでは特に起こりやすいです。

69 KB/s (25507357 bytes in 359.923s)
        pkg: /data/local/tmp/TestApp.apk
Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]

INSTALL_FAILED_INSUFFICIENT_STORAGE このエラーはインストール先のディスク容量が足りない場合です。

実機であれば、不要なデータやアプリを削除するかSDカードなどに移動して、空き容量を増やします。

エミュレータの場合、起動オプションや設定ファイルでディスク容量を変更できます。

空き容量を調べる方法
エミュレータの起動オプションで容量を変更する方法
設定ファイルで容量を変更する方法

空き容量を調べる方法

続きを読む
  1. 2012/02/04(土) 23:11:06|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

res/drawableの画像を変更しても、変更が反映されない場合

res/drawableの画像を変更しても、変更が反映されないことがまれにあります。

res/ 以下のファイルはビルド時に bin/res/ 以下にキャッシュされるためで、このファイルを削除することで、画像の変更が反映されます。

classファイルなどもキャッシュされていますが、これらのファイルを削除すると正しくビルドできなくなることがあります。

Eclipseの操作でキャッシュを削除するには
プロジェクト → クリーン
です。

続きを読む
  1. 2012/02/04(土) 22:57:57|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

アプリケーションプロセスを強制的に終了する方法

Androidでは、プロセスは android.os.Process で管理します。

自身のプロセスIDは

android.os.Process.myPid()

です。

これを強制的に終了するには

続きを読む
  1. 2012/02/04(土) 22:56:08|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0

Activityのメソッド順

Activityの開始
onCreate()
onStart()
onResume()
Activity表示
onPause()
onStop()
onDestroy()
Activity終了
続きを読む
  1. 2012/02/03(金) 09:21:42|
  2. Androidアプリ製作
  3. | トラックバック:0
  4. | コメント:0
次のページ

上に戻る