目次
java
- プロジェクトのファイルを相対参照で取得したい
- カレントディレクトリがプロジェクトフォルダであることを利用する
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; }
android:java
開発環境
- proguardしたアプリだけ突然落ちる箇所がある
- オリジナルViewを定義しておりproguardファイルに定義をしていない
下記を参照-keep public class * extends ファイル名(パッケージ名含む) -keep public class ファイル名(パッケージ名含む)
- オリジナルViewを定義しておりproguardファイルに定義をしていない
- 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か所くらいあるので注意
- エラー文の通り、-keepclasseswithmembernames の代わりに -keepclasseswithmembers を使う
- galaxy nexusがデバッグモードONにしても認識しないんだけど
- クリックリスナーのメソッドなどで@overrideを消すよう求められる
- javaのコンパイラ準拠レベルがアノテーションに対応していない値になっている
「ウィンドウ」 → 「設定」 → 「Java」 → 「コンパイラー」で準拠レベルを1.6以上にする
- javaのコンパイラ準拠レベルがアノテーションに対応していない値になっている
- Error generating final archive: Debug certificate expired onてエラーが出る
- しばらく開発環境を利用していないと出るエラーらしい
- *.android の下にある debug.keystore を削除する
- Windowsの<コントロールパネル>→<日付と時刻>→<タイムゾーンの変更>で
タイムゾーンを一時的に変更する - eclipseのクリーンを実行
- debug.keystoreが生成されていることを確認する
- タイムゾーンを元に戻す
- IS11Tが認識しないのですが…
- 同じプロジェクトを使用しているのにビルドに失敗する
- javaのビルド・パス > 順序およびエクスポートを確認する
- javaコンパイラーの設定を確認する
- SDK4.0に更新ができないお
- 諦めて1からインストールしなおすのだ
- http://developer.android.com/sdk/index.html でexeをダウンロードし、実行する
- eclipseで<ヘルプ>→<新規ソフトウェアのインストール>
- すでにインストールされている のは?をクリック
- 既存のAndroid関係のツールを全て削除する
- 作業対象から Android Plugin 的なものを選択
- <開発ツール>を選択し次へ…そしてダウンロード
- 署名に関するセキュリティの警告が出るが気にせずに続ける
- <ウィンドウ> → <設定> → <Android>
- SDKロケーションをSDKをインストールした場所にする
- elipseを閉じる
- コマンドプロンプトで以下のコマンドを実行
cd ・・・・・・/eclipse eclipse -clean
- 一度新規作成でプロジェクトを生成する
(上記処理を行わないと既存プロジェクトのターゲット変更はできない)
- モトローラのISW11MのUSBが認識しない
- 下記URLからドライバをダウンロードする(MotoHelper_2.0.53_Driver_5.2.0.exe)
- Android端末の通知バーからUSB接続を選択しモトローラ電話ポータルにチェック
→ ADBがインストールされる
- 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」にする
- 「ウィンドウ」→「設定」→「Android」→「DDMS」の
Activity / Fragment
- PereferenceActivityで設定を作成したときに別Activityへのリンクを作成したい
- 戻るHKを長押ししたときに戻るHK押下時の動作が発生してしまう
- 戻るHK長押しはActivityクラスの中で戻るHK押下のイベントを大量発生させるから
戻るHK押下イベントを発生させたくない場合は、dispatchKeyEventにて
最後に return false を返せばよい
Activityとは別にNativeが判断する処理に回る(何も起こらないと思う)
- 戻るHK長押しはActivityクラスの中で戻るHK押下のイベントを大量発生させるから
- Activityのオプションについて
- fragmentで作成したリストビューがreplace時にスクロール位置を設定できない
- fragmentがよく分からないんだけど…
- fragmentが上手く動かないんだけど
- FragmentActivityをちゃんと継承しているか?
Intent
- Intent Filter って何?
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
- 以下のようなXMLをdrawableに作成し、それを呼び出す
- リストビューのスクロール位置を暗記する方法
- ListView.getFirstVisiblePosition() で表示された最上面のpositionを記憶し、ListView.setSelection() でスクロールする
- http://androidkaihatsu.seesaa.net/article/168114412.html
- リストビューをスクロールすると下の方で何回も描画されたり、フッタの高さが変わったりする
- フッタ追加(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>
- http://relog.xii.jp/archives/2010/11/androidprogress_1.html
- http://android.g.hatena.ne.jp/yuiseki/20100630/1277893001
- http://tech.cm55.com/wiki/Android/baconRank
- http://d.hatena.ne.jp/ktdk/20110321/1300703972
- 縦にスクロールできる画面を作りたい
- <ScrollView></ScrollView>で一番外側を挟む。その内側に何らかのレイアウトを入れること
通信
- 非同期処理(通信中のダイアログ表示など)をしたい
- AsyncTaskを使おう。doInBackgroundが非UIスレッドで行う実際の処理。
- JSONのデータをREST APIで取得したい
- TwitterのREST APIにはじかれる
- <uses-permission android:name="android.permission.INTERNET" /> をmanifestに追加する
- REST APIのリクエストをキャンセルする場合は?
- 調査中
ファイル入出力
- Android端末内部のファイルを読み込みたい
- 例
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "test.txt"; try { FileReader reader = new FileReader(path); char[] buffer = new char[1000000]; try { reader.read(buffer); } catch (IOException e) { e.printStackTrace(); } String getStr = new String(buffer).trim(); } catch (FileNotFoundException e) { e.printStackTrace(); } - パーミッションにSDカードの件を追加することを忘れないように
- 例
データベース
- Androidのデータベースの重要な注意点
- SQLiteDatabase#closeは明示で呼ぶな
- Cursor#closeは明示で呼べ
- データベースを利用するには
- DBの作成
→ http://yan-note.blogspot.com/2010/09/android-sqlite.html - DBの中身を見たい
→ http://yan-note.blogspot.com/2010/09/android-sqlitegui.html- エミュレータの時しか見ることができません
- DBの作成
- nativeのsqlについての基本知識
- 実行メソッドは public void execSQL(String sql) sql には sql文が入る
- データの追加
INSERT INTO table_name (column_name1, column_name1, ...) VALUES (data1, data2, ...);
- データの更新
UPDATE table_name SET column_name1 = data1, ... WHERE (条件式);
- データの削除
DELETE FROM table_name WHERE (条件式);
その他
- 日付のフォーマットが良く分からん
- JSONValueを文字列に戻したい
- getJSONStringでおk
- 処理がスーパー重い
- for文の中でnewとかしまくってんじゃないの? newは超重いので極力避けること