タグ別アーカイブ: アンドロイド

備忘録 Android @Overrideで大量エラーの対処


androidでeclipseを使用している時に新たなワークスペースでインポートするときなど、
「スーパークラスのメソッドをオーバーライドする必要があります」というエラーが大量発生した場合。

よく見ると@Overrideアノテーションのところでエラーとなっている。

なんてことはない、単純にJavaコンパイラーのバージョンが1.5の場合に発生するようです。。。

Javaコンパイラーを1.6以上にしてあげると解決。。

何でだろう、Android以外のプロジェクトでは1.5でも@Override使えていたような気がするんだが??
1.6からだったんだろうかーーーーー?

参考URL:http://techbooster.jpn.org/andriod/environment/6626/

[Android] R.javaが消える件


色々ソースをもらってインポートすることが最近はよくあります。

その際、いろんなところでコンパイルエラーが出るんですが、AndroidのBuild Targetなどのバージョンを変えるなどして対応していますが、その中でリソースなどを管理するR.javaが消える事がしばしばあります

コンパイルエラーなども出ないので、はっきりとすぐに分からなかったのですが、以下のサイトでなんとなくみるべきところがわかりました。

http://techbooster.jpn.org/andriod/environment/5796/

リソースをつかさどっているR.javaなのでリソース関連でエラーがある場合に発生するようです。res以下のxmlファイルやAndroidManifest.xmlなど

自分の場合はほぼAndroidManifest.xml の不具合でした。

特に頻繁に多いのが、android:configChanges の項目です。

どうにか対応すると、R.javaができます。 めでたしめでたし!

 

2012/05/08 19:43 追記

http://onno.jp/dev/2011/12/431admob-sdk.html

これでしたAdmobSDKのせいでConfigChangesがエラーでした。

書かれているようにandroid build target を13以上にすると解決したー!!

 

 

 

[Android] dp , sp の単位について


 
pxは使うな

このことはよくきいていたが、では単位として用意されている「dp」「sp」の違いはなんだろう。。。

参考:http://y-anz-m.blogspot.jp/2012/02/androidtextview-settextsize-sp.html

  1. dp  レイアウトの幅などを調整するときに使う
  2. sp  文字のフォントサイズを指定するときに使う

ということらしい。。

spはシステム全体の文字スケールに合わせるとあるが、scaleDensityの値によって大きさが変わるものらしい。本文中の文字など大きさを変わってもししょうがないものについてはこれで行ける。

dpは解像度によって見え方を統一できる単位。レイアウトの大きさやヘッダーやフッターの文字など、一定の大きさからスケールしてほしくないものに対して使える。

ちなみに、

TextView の setTextSize() はspが使われているらしい。

変更するときは

public void setTextSize (int unit, float size)  の第一引数のunitにTypedValueの定数を指定すれば良い

  • COMPLEX_UNIT_DIP : dp, dip
  • COMPLEX_UNIT_MM : mm
  • COMPLEX_UNIT_PT : pt
  • COMPLEX_UNIT_PX : raw pixels
  • COMPLEX_UNIT_SP : sp

 
 

◆◆ 単位に関する参考情報 pxに変換する方法 ◆◆
  •  sp, から pt, px に変換する 
dp から pt に変換する方法(Android dip, dp, から pt, px に変換する)と同じように
getContext().getResources().getDisplayMetrics().scaledDensity
で文字スケールも考慮された比率がとれるので、 これを sp 単位の値にかければ pt, px 単位になります。
 
  • Android dip, dp, から pt, px に変換する

 

以下は以前に自分が書いたJava上からdpを指定するように変換するソース

public static float getDisplayScale(Context context) {
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics dm = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(dm);
    return dm.scaledDensity;
}

//使うときはActivityのクラス内で、以下のようにする。
float displayScale = getDisplayScale(getContext());
int size = (int) (50 * displayScale + 0.5f);  

// + 0.5fしているのはスペースがintにキャストした時にスペースが潰れないようにするため。
// 繰り上げさせるように。
//sizeをLayoutParamsのサイズに指定するなどすると解像度に
//依存しないdpを指定したようなサイズで設定できる。

 

[Android]実機で作成中アプリケーションのデータディレクトリへアクセスする


Android開発をしていると、実機での動作確認やエミュレータでの動作確認を行うと思います。しかし、実機で動作確認をしながらデータなどの整合性を確認する方法がなかなかに難しい。。。エミュレーターだとRoot権限があるのでデータディレクトリやSQLiteの中身などを見ることはできますが、実機でしか動作しないC2DMや課金の機能を確認する際は不便を感じます。

その中でデータディレクトリを見る方法を教えてもらいました!!
MacのZsh環境からadb シェルコマンドを使って端末を操作します。

参考:http://stackoverflow.com/questions/1043322/why-do-i-get-access-denied-to-data-folder-when-using-adb

まずはアプリの設定
AndroidManifest.xmlでdebuggableを有効にする。

AndroidManifest.xmlのapplicationタグ

<application android:icon="@drawable/icon" 
  android:label="@string/app_name" android:debuggable="true" >

adbコマンドを使ってシェルで入ります。

% adb shell  (端末を指定する場合は % adb -s [DEVICE_ID] shell)

通常アプリのdataディレクトリはPermission Denied となります。

$ ls /data/data/[com.yourpackage]/
/data/data/[com.yourpackage]: No such file or directory

run-asコマンドでアプリを起動しdataディレクトリに入る

$ run-as [com.yourpackage]

そうすると/data/data/[com.yourpackage]/ へカレントディレクトリが移動し
[files][databases][shared_pref]ディレクトリが見えるはず!
shared_prefにあるプリファレンスや更新されたファイルなどのテキストファイルであれば
cat コマンドで中身も見れます。

run-asコマンド最強!!と思った瞬間でした。

だが、、、、databaseはsqlite3コマンドが実機に貼っていないため中身までは見ることは出来ませんでした。
見る方法があれば教えて欲しいです。(Root化なしで)

追記・・・
デバイスでrun-asが使えるものと使えないものがあるみたい。。。
Xperia Nexusは使えたけど。。。自分の持っている国内メーカのもの1機種使えないものがありました。。

[Android] 開発に必要なちょっとした5個のTips


Android開発していて必要な、使うと便利そうなライブラリ、ツールをリンクします!

  1. Support Package

    http://developer.android.com/intl/ja/sdk/compatibility-library.html

    Androidの新しいバージョンのAPIを下位バージョンでも使用することが出来る。Android公式のライブラリ。実はまだ使ったことない。。。

    Fragmentや横のスワイプなどが簡単に使えるらしい!触ってみたい。

     

  2. ActionBar Sherlock

    http://d.hatena.ne.jp/gabuchan/20120227/1330302592

    Action Bar を2.x系でも表示することが出来るライブラリ。Android 3.0 (API level 11)以上からしかデフォルトのAPIでは使用できないので、2.x系でもActionBarを入れたい場合いいかも
     

  3. ActionBar Compat

    http://developer.android.com/intl/ja/resources/samples/ActionBarCompat/index.html

    Action Bar をサポートするライブラリが公式にもある?!これでActionBarを3.0以下でも使えるかも。。。調査必要
     

  4. Android Design

    http://developer.android.com/intl/ja/design/index.html

    上記Action Barなど、Androidのデザインに関する標準デザインをパターンとして公開したサイト。今後はAndroidアプリのデザインもパターン化されていくのかな。開発者としては一定の指標が把握できるので、デザインに困ったときは見るとよさそう!
    Android Design Action Bar について

     

  5. Android Nine Patch(9-patch)フォーマット

    http://www.taosoftware.co.jp/blog/2009/04/android_nine_patch9patch.html

    Androidの背景などに使用するための画像のフォーマットで、画像が引き伸ばされても問題ない画像のことです。リンクを見てもらえばわかると思うのですが、画像を9つの部分にわけその部分のどこを引き伸ばすのかとかを定義できます。SDKに内蔵されているツールで作成することが出来るようです。アプリのファイルサイズを小さくする一つの手段ですね。

    Android 9 – patc の画像を作る

さて、上記のツールをまだ実際に使ったことはないので、これからどんどん使っていこう!特にSupportToolsとActionBar