2013/01/29

Android でカメラ撮影後メンバ変数が空になる。

理由はわかっていたんです。
カメラから戻ってくるときに onActivityResult が呼ばれるんですが、
そのまえに onCreate() が呼ばれている。要するに Activity が再生成されているから、
カメラ呼び出し前にメンバ変数セットしていようとも、もろともいなくなってしまったと。

以前にこんなのを書きました。
Android でカメラかギャラリーから画像を読み込んでトリミングして表示するサンプル
ただここに盲点が有りました。

Samsung Galaxy シリーズという盲点がぁがぁ・・・!!(大げさ)


※2013/01/30 21:33 追記
Google+ でご指摘頂きました。
Activity が破棄され、メンバ変数が初期化されてしまうような場合、
Activity#onSaveInstanceState(Bundle outState) で Bundle に メンバ変数として保持していた値を put() 。
その後復帰後に Activity#onRestoreInstanceState(Bundle savedInstanceState) で Bundle から 取り出して再度メンバに設定してあげるようです。

Activity のライフサイクル大事!!
ご指摘ありがとうございます!!

2013/01/25

Chrome for Android の USB ウェブデバッグでスマフォWEBサイトをデバッグする

Android 端末にインストールした Chrome を通して、
PC 側の Chrome で WEBページのデバッグができますよと。
試してみました。

用意。

  • Android 端末。
  • Chrome (PC側もAndroid側も)
  • Android SDK

まあぶっちゃけ ココ を見てしまえば終わりなんですが、
Chrome は両方にインストール済として話を進める。

Android SDK と Android SDK Platform-tools の準備。

とりあえず Android SDK をダウンロードして任意の場所に展開。 ~/Library/android-sdk-macosx (以下 SDK_PATH)な感じで僕は置いてる。
SDK_PATH/tools/android
を実行するとなんか (Android SDK Manager) 出るので、Android SDK Platform-tools をインストールする。SDK_PATH/platform-tools っていうディレクトリができてるはず。

Android 端末の設定。

SDK ダウンロードしてる間にでも Android 側の設定をしときます。OSのバージョンが・・・

  • 3.2 以下:[設定] -> [アプリケーション] ->[開発者向けオプション] -> [USBデバッグ]
  • 4.0 以上:[設定] -> [開発者向けオプション] -> [USBデバッグ]
  • 4.2 以上:[設定] -> [この端末について] -> [ビルド番号]を 7回タップ -> 画面戻って戻って[開発者向けオプション] -> [USBデバッグ]

にチェック。日本語のメニュー項目名は違うかも。そして 4.2 以上の端末は隠しコマンド的なのなにそれこわい。

そして、Chrome の[設定] -> [デベロッパーツール] -> [USB ウェブ デバッグを有効化] にチェックを入れておく。

それでは・・・

Android と PC を USBでつなぐ。

adb コマンド叩く (PC 側)

./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remote

* daemon not running. starting it now on port 5037 *
* daemon started successfully
って出たらOK。

Chrome でアクセス (PC 側)

http://localhost:9222

アクセスすると、Android の Chrome で開いているタブ一覧が出てくるので、好きなのクリック。PC 側の Chrome で デベロッパーツールが開くのでよしなにします。

Enjoy!

※404 的なことになったら
SDK_PATH/platform-tools/adb kill-server
からの
./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remote
をお試しくだしあ。

ただ・・・


  • Android 標準ブラウザで使えない。
  • 結局は端末依存とかあるし、やっぱり該当の機種がないとアレ。
  • だったら、Chrome でユーザーエージェントいじったほうが早くね?

ヽ(´Д`;)ノアゥ...

結論

FireMobileSimulator すごい。
https://chrome.google.com/webstore/detail/firemobilesimulator-for-g/mkihbloiacgiofaejgagokalpeflnmbe?hl=ja





2013/01/21

Eclipse にて @Override アノテーションで must override a superclass method と怒られた。

わかっていたはずなのに、無駄にハマった。
忘れないために、自分で記録しておく。


こんなかんじで must override a superclass method と怒る Eclipse さん。
これはコンパイラのレベル が 1.5 になっているから。Android  開発の場合は 1.6 に変更します。

[command + ,] で [Preferences] を開いて、
[Java] -> [Compiler] を開く。
[Compiler compliance level] を 1.6 に変更。

これで直る。
エラーが消えなかったら、プロジェクトのクリーンをしてみる。[Project] -> [clean]
ん?これって昔書いたっけ?


2013/01/20

VirtualBox でコンソール画面を出さずに仮想マシンを起動する。

Oracle VM VirtualBox マネージャーから起動すると、
もれなくコンソール画面がついてくる。

邪魔。

サーバー用途の場合画面なんていらなので、消したい。

VirtualBox でゲストの CentOS に SSH で接続したい。

所謂ホストオンリーネットワーク。

ホスト: MacOS X 10.8.2
ゲスト: CentOS 6.3
VirtualBox: 4.2.6