onCreateでこんな感じであらかじめ処理を指定しておけば、
いちいち書かなくても例外とかが確認できて便利。
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(tag, "onCreate");
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
// catchしなかった例外を拾ってログに出力するようにしています
@Override
public void uncaughtException(Thread thread, Throwable e) {
Log.e("tag", e.toString());
StackTraceElement[] elements = e.getStackTrace();
for (StackTraceElement element : elements) {
Log.e("tag", element.toString());
}
}
});
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
2011年6月22日水曜日
2011年5月31日火曜日
エミュレータの音がでない - android -
エミュレータで音量等を変更しても何の音も出ない。
マナーモードに設定されています
とか何とか。。。
とりあえずmp3を再生すべく
adb shell から sdcard にディレクトリを作って適当なファイルを突っ込む。↓
これだけでは再生できないのでエミュレータから
Dev Tools -> Media Scanner
で音楽を再生すると無事成功!
着信音にmp3ファイルを指定するとなぜかその他の音も出るようになった=3
あんまりエミュレータはあてにならないっぽいなー。
DDMSもなぜかファイルエクスプローラもエラーでまくるし、あんまり役に立たない。
Dev Tools ってなんだろ…?初めて使いました。
また調べることが増えた。
マナーモードに設定されています
とか何とか。。。
とりあえずmp3を再生すべく
adb shell から sdcard にディレクトリを作って適当なファイルを突っ込む。↓
これだけでは再生できないのでエミュレータから
Dev Tools -> Media Scanner
で音楽を再生すると無事成功!
着信音にmp3ファイルを指定するとなぜかその他の音も出るようになった=3
あんまりエミュレータはあてにならないっぽいなー。
DDMSもなぜかファイルエクスプローラもエラーでまくるし、あんまり役に立たない。
Dev Tools ってなんだろ…?初めて使いました。
また調べることが増えた。
2011年5月24日火曜日
位置情報とかGeocoderとかLocationManagerとか
LocationManager はエミュレータの API レベルが8以上だと使えませんでした。
APIレベル7なら大丈夫みたい。
8以上だとエミュレータが落ちるし・・・。(ウチだけか?)たのむぜgoogle先生(#^ω^)
GeocoderクラスをつかってLocaleから住所を取得。↓
Geocoder geocoder = new Geocoder(context, Locale.JAPAN);
List addressList =
geocoder.getFromLocation(locale.getLatitude(), locale.getLongitude(), 5);// 引数末尾は返す検索結果数(1~5推奨とか)
String resule;
for(Address address: addressList){
String addressLine = address.getAddressLine(1);
if(addressLine != null &&
(result == null || result.rength() < addressLine.rength()))
result = addressLine;
}
addressLineの2行目で一番長いのをもってくると。
1行目は国名が入っているのでそれ以外は場所によって通りの名前だったり住所だったりするみたいだが、大体住所が入ってる。ただ〇丁目までだったり〇丁目△ー□だったりするので一番長いのを使ってみる。もしかすると住所のほうが通りの名前より短い場合もあるかもしれないので、このまま使うのはまずい・・・かなー。
メモ
通りすがりの人教えてくれんかな |ω・`)
googlemapでアドレスバーにスクリプト入れると座標がでる
APIレベル7なら大丈夫みたい。
8以上だとエミュレータが落ちるし・・・。(ウチだけか?)たのむぜgoogle先生(#^ω^)
GeocoderクラスをつかってLocaleから住所を取得。↓
Geocoder geocoder = new Geocoder(context, Locale.JAPAN);
List addressList =
geocoder.getFromLocation(locale.getLatitude(), locale.getLongitude(), 5);// 引数末尾は返す検索結果数(1~5推奨とか)
String resule;
for(Address address: addressList){
String addressLine = address.getAddressLine(1);
if(addressLine != null &&
(result == null || result.rength() < addressLine.rength()))
result = addressLine;
}
addressLineの2行目で一番長いのをもってくると。
1行目は国名が入っているのでそれ以外は場所によって通りの名前だったり住所だったりするみたいだが、大体住所が入ってる。ただ〇丁目までだったり〇丁目△ー□だったりするので一番長いのを使ってみる。もしかすると住所のほうが通りの名前より短い場合もあるかもしれないので、このまま使うのはまずい・・・かなー。
メモ
method | return |
---|---|
getCoundryName() | 国名 |
getAdminArea() | 都道府県 |
getSubAdminArea() | よくわかりません |
getLocality() | 市区町村 |
getSubLocality() | これまた不明 |
getFeatureName() | AddressLineの最後の方… |
getPostalCode() | 郵便番号 |
getPremises() | これも不明 |
getThoroughfare() | 意味としては通りとからしいが取得できず |
getSubThoroughfare() | 〇丁目? |
通りすがりの人教えてくれんかな |ω・`)
googlemapでアドレスバーにスクリプト入れると座標がでる
javascript:void(prompt('',gApplication.getMap().getCenter()));なんか、とにかく使い勝手わるくね? あんまり日本向けになってないのかな。なんで戻り値がAddressのリストで、引数にリストのインデックスの最大値って意図がわかりません。中身も住所だったり地名、通りの名前だったり郵便番号だったり。Addressクラスもしっくり来るメソッドないっぽいし・・・。
2011年5月7日土曜日
画面いっぱいに表示されない…
エミュレータの画面サイズを自分で指定するとなぜかウィンドウいっぱいに
表示されないという事象が …
なぜだかよくわかってないけどとりあえず manifestでmin SDK versionを4とすると解決した。
こちらを参考にしました↓
http://ameblo.jp/strobesystems/entry-10797671979.html
追記:
android1.5まではHVGA(320×480)まで?しか?サポートしてないそうで
それが原因のようで。
表示されないという事象が …
なぜだかよくわかってないけどとりあえず manifestでmin SDK versionを4とすると解決した。
こちらを参考にしました↓
http://ameblo.jp/strobesystems/entry-10797671979.html
追記:
android1.5まではHVGA(320×480)まで?しか?サポートしてないそうで
それが原因のようで。
2011年5月6日金曜日
入力制限
EditTextの属性で入力を制限できるみたい。
あと改行も。↓
http://d.hatena.ne.jp/kuwalab/20101213/p1
一応本家↓
http://developer.android.com/reference/android/R.styleable.html#Searchable_inputType
あと改行も。↓
http://d.hatena.ne.jp/kuwalab/20101213/p1
一応本家↓
http://developer.android.com/reference/android/R.styleable.html#Searchable_inputType
2011年4月28日木曜日
タイトル周りのメモ
・タイトルを非表示に
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//SetContentView()の前に行う必要がある
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
・タイトルにアイコンを表示させる
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.main);
setFeatureDrawbleResource(Window.FEATURE_LEFT_ICON,R.drawable.icon);
}
・タイトルにプログレスバーを表示させる
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
//クルクルの方 Window.FEATURE_INDETERMINATE_PROGRESS
setContentView(R.layout.main);
setProgressBarVisibility(true);
//setProgressBarIndeterminateVisibility(true);
}
・ (タイトルじゃないけど)フルスクリーン
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//SetContentView()の前に行う必要がある
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
・タイトルにアイコンを表示させる
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.main);
setFeatureDrawbleResource(Window.FEATURE_LEFT_ICON,R.drawable.icon);
}
・タイトルにプログレスバーを表示させる
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
//クルクルの方 Window.FEATURE_INDETERMINATE_PROGRESS
setContentView(R.layout.main);
setProgressBarVisibility(true);
//setProgressBarIndeterminateVisibility(true);
}
・ (タイトルじゃないけど)フルスクリーン
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Manifestでも出来る。
<activity android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
themeはほかにもいろいろスタイルを設定できるみたい。↓
http://developer.android.com/reference/android/R.style.html
2011年4月27日水曜日
JUnitを使って画面遷移のテストをする
ActivityMonitor クラスを使用
テストはActivityInstrumentationTestCase2<T>を継承したクラスで行う。
ActivityMonitor monitor = new AcrivityMonitor(
String class, Instrumentation.ActivityResult result, boolean block)
class = 対象のクラス名
result = モニタがヒットした場合に返される…Can be null なのでとりあえずnull
block = モニタがActivityをブロックするかとかなんとか???
ActivityMonitor monitor = new ActivityMonitor("MyActivity", null,false true);
getInstrumentation().addMonitor(monitor);
~~対象のアクティビティを呼び出す処理~~
assertEquals(1, monitor.getHits());
とりあえず出来てそう。
※UIへの操作はrunOnUiThreadメソッドを使うこと。
第三引数をtrueにしておかないとテストが進まなかったり・・・なにやらActivityが居座って入るような?
テストはActivityInstrumentationTestCase2<T>を継承したクラスで行う。
ActivityMonitor monitor = new AcrivityMonitor(
String class, Instrumentation.ActivityResult result, boolean block)
class = 対象のクラス名
result = モニタがヒットした場合に返される…Can be null なのでとりあえずnull
block = モニタがActivityをブロックするかとかなんとか???
ActivityMonitor monitor = new ActivityMonitor("MyActivity", null,
getInstrumentation().addMonitor(monitor);
~~対象のアクティビティを呼び出す処理~~
assertEquals(1, monitor.getHits());
とりあえず出来てそう。
※UIへの操作はrunOnUiThreadメソッドを使うこと。
第三引数をtrueにしておかないとテストが進まなかったり・・・なにやらActivityが居座って入るような?
登録:
投稿 (Atom)