java-Android

Last-modified: 2012-01-16 (月) 21:57:12

star01.gif目次

star01.gifjava

  • プロジェクトのファイルを相対参照で取得したい
    • カレントディレクトリがプロジェクトフォルダであることを利用する
      private static final String FILE_PATH = "./src/testFile.java";
  • ファイルの最終更新日を知りたい
    private static String getLastModify() {
    	File file;
    	file = new File(FILE_PATH);
    	final long lastModify = file.lastModified();
    	final Date date = new Date(lastModify);
    	final DateFormat dateFormat = DateFormat.getDateTimeInstance();
    	final String lastModifyStr = dateFormat.format(date);
    	return lastModifyStr;
    }

star01.gifandroid:java

開発環境

  • proguardしたアプリだけ突然落ちる箇所がある
    • オリジナルViewを定義しておりproguardファイルに定義をしていない
      下記を参照
      -keep public class * extends ファイル名(パッケージ名含む)
      -keep public class ファイル名(パッケージ名含む)
  • T-01Dが認識しない
    • fmworld.net/oss/usb_driver/t-01d/data/Readme.txt
    • 実際に行う作業は「adb_usb.ini」を開き、「0x04C5」の行を追加すること
      [ADB接続の確認]の2点のみ
      もちろん、adbドライバはインストールすること
  • Android SDK最新版でapkファイルを作成しようとしたら以下のエラーが出た
    Obsolete proguard file; use -keepclasseswithmembers instead of -keepclasseswithmembernames
    • エラー文の通り、-keepclasseswithmembernames の代わりに -keepclasseswithmembers を使う
      全部で3か所くらいあるので注意
  • クリックリスナーのメソッドなどで@overrideを消すよう求められる
    • javaのコンパイラ準拠レベルがアノテーションに対応していない値になっている
      「ウィンドウ」 → 「設定」 → 「Java」 → 「コンパイラー」で準拠レベルを1.6以上にする
  • Error generating final archive: Debug certificate expired onてエラーが出る
    • しばらく開発環境を利用していないと出るエラーらしい
    1. *.android の下にある debug.keystore を削除する
    2. Windowsの<コントロールパネル>→<日付と時刻>→<タイムゾーンの変更>で
      タイムゾーンを一時的に変更する
    3. eclipseのクリーンを実行
    4. debug.keystoreが生成されていることを確認する
    5. タイムゾーンを元に戻す
  • 同じプロジェクトを使用しているのにビルドに失敗する
    • javaのビルド・パス > 順序およびエクスポートを確認する
    • javaコンパイラーの設定を確認する
  • SDK4.0に更新ができないお
  • 諦めて1からインストールしなおすのだ
  1. http://developer.android.com/sdk/index.html でexeをダウンロードし、実行する
  2. eclipseで<ヘルプ>→<新規ソフトウェアのインストール>
  3. すでにインストールされている のは?をクリック
  4. 既存のAndroid関係のツールを全て削除する
  5. 作業対象から Android Plugin 的なものを選択
  6. <開発ツール>を選択し次へ…そしてダウンロード
  7. 署名に関するセキュリティの警告が出るが気にせずに続ける
  8. <ウィンドウ> → <設定> → <Android>
  9. SDKロケーションをSDKをインストールした場所にする
  10. elipseを閉じる
  11. コマンドプロンプトで以下のコマンドを実行
    cd ・・・・・・/eclipse
    eclipse -clean
  12. 一度新規作成でプロジェクトを生成する
    (上記処理を行わないと既存プロジェクトのターゲット変更はできない)
  • memory analzerで2点間のヒープサイズを比較するやり方が分からない
    1. 比較したい2つのファイルにて以下の2,3を行う
    2. Window > Navigation History
    3. histogram を右クリック > Add to Compare Basket
    4. Compare Basketタブに切替
    5. Compare the results をクリック(赤い!)
  • memory analzerがeclipseから「Dump HPROF file」をクリックしても動作しない
    • 「ウィンドウ」→「設定」→「Android」→「DDMS」の
      HPROFアクションを「Open in Eclipse」にする

Activity / Fragment

Intent

View

  • layout_gravity で 右中央揃えなど複数の条件をしていしたい
    • 以下のように複数指定する
      android:layout_gravity="right|center_vertical"
  • ある画像を繰り返し表示したい(ボーダー線のループなど)
    • 以下のようなXMLをdrawableに作成し、それを呼び出す
      <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
       android:src="@drawable/繰り返したい画像"
       android:tileMode="repeat"
      />
    • http://d.hatena.ne.jp/yoshiob/20100319
  • リストビューをスクロールすると下の方で何回も描画されたり、フッタの高さが変わったりする
    • フッタ追加(ListView.addFooterView)を何回も行っていた。2回以上フッタ追加を行っていたから
  • リストビューを1からもう一度構築したい
    • adapterをclearして再度addAdapterをすればできる
  • リストビューのクリックされた場所のパラメータを取りたいんだけど
    getView(position)で取ると使い回しの関係で正確にとれない
    • ListView#getItemAtPosition(position)でとれる
  • SeekBarのデザインを変更したい
    • つまみ:android:thumb
    • バー: android:progressDrawable="@drawable/progress"
    • progress.xml
      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
          <item
          	android:id="@android:id/background"
          	android:drawable="@drawable/log_background"/>
          <item android:id="@android:id/progress">
              <clip android:drawable="@drawable/log_progress"/>
          </item>
      </layer-list>

通信

ファイル入出力

データベース

その他

  • 日付のフォーマットが良く分からん
  • JSONValueを文字列に戻したい
    • getJSONStringでおk
  • 処理がスーパー重い
    • for文の中でnewとかしまくってんじゃないの? newは超重いので極力避けること

star01.gifお役立ちリンク