久しぶりにGenymotionを使おうとしたら起動しなくなってしまっていました。
原因は不明ですがGenymotionの更新かOS更新が原因だったのでは、と思ってます。
苦肉の策でGenymotion及びVirtualBoxをAppCleanerで削除して
再インストールしたところ今度は端末登録できなくなってしまいました。
エラー内容は
Failed to import OVA
これとかこれとか見たのですが解決せず。。。
ダメ元でGenymotion Shellを実行したらアプリの認証(ダイアログのやつ)を
してなくて、これが原因で端末追加できていませんでした。
Genymotionを更新したらGenymotion Shell起動は必須のよう。
2014年10月30日木曜日
2013年12月24日火曜日
Android開発環境をAdt Bundle からIntelliJ CE に変更しました。
エンジニアの知人からイケてるエンジニアはIntelliJを使うと聞き
試しがてらIntelliJ CE(無料版)を使ってみたところなかなか良い感触だったので
本格的に乗り換えをしました。
ちなみにAndroidStudioはまだプレビュー版ということなので手はつけていません。
IntelliJ最新版の13はAndroidStudioからAndroid周りの機能を逆輸入したものらしく
Android関連は無料版でも十分とのことです(真意不明)。
1周間ほど使った感触は
・eclipse互換はありがたい
→eclipseで作成してたプロジェクトをすんなり読み込んでくれる
・ライブラリ参照で理解に手こずる
→コード上では参照できてるのにビルドで見つかれないとなる。
→IntelliJのモジュールの仕組みを理解する必要あり。
・レイアウトはxmlエディターのとなりにプレビューあるのは有難い。
→eclipseでの切り替えは地味にローディングしてしまうので。
・プログラムはコード補完はeclipseより優れてます。
→こっちが求めてる候補が最上位に出てくる気がしてます。
→あと地味に余分な()を入れないのでBSする手間が省けます。
・ターミナルは付属してますがFinderでファイルをコピーしてもフルパスでクリップボードに登録されないので不便。
→adb install {フルパス} ができない。
→adbコマンドは簡単なもののみintelliJで叩いてinstallは本家ターミナルで叩いてます。
・DDMSは別途Tool起動
→1つのTool内で簡潔したい人は不便でしょう。
→intelliJで出来るのはlogcatくらいです。
ただしアプリでのフィルターは自分で検索窓に打ち込む必要があります。
・デバッグは慣れが必要な気がします。
→僕はF6, F8でずっとやってきたのでどうしても未だにF6してしまう。
→あと、インスペクタはどれですか?
・apk書き出しは簡単
→一度keystoreとパスワード×2を登録してしまえば次からはクリックのみで署名付きapkにしてくれます。たまにマスターPass訊かれるけどそれでも簡単になります。
・Draw9patchはintelliJ内で起動。
→地味に便利だけどDDMSもやってほしかった。。。
・ソース管理
→Git、SVNはデフォルトで使える。
・DB管理
→有料版にはViewerがあるとか。
とりあえずこれくらい。他にもあった気しますが。。。
総じてメリットデメリットありますが、個人的にはメリットが上回ってます。
なのでとりあえずこれからも使っていきます。
試しがてらIntelliJ CE(無料版)を使ってみたところなかなか良い感触だったので
本格的に乗り換えをしました。
ちなみにAndroidStudioはまだプレビュー版ということなので手はつけていません。
IntelliJ最新版の13はAndroidStudioからAndroid周りの機能を逆輸入したものらしく
Android関連は無料版でも十分とのことです(真意不明)。
1周間ほど使った感触は
・eclipse互換はありがたい
→eclipseで作成してたプロジェクトをすんなり読み込んでくれる
・ライブラリ参照で理解に手こずる
→コード上では参照できてるのにビルドで見つかれないとなる。
→IntelliJのモジュールの仕組みを理解する必要あり。
・レイアウトはxmlエディターのとなりにプレビューあるのは有難い。
→eclipseでの切り替えは地味にローディングしてしまうので。
・プログラムはコード補完はeclipseより優れてます。
→こっちが求めてる候補が最上位に出てくる気がしてます。
→あと地味に余分な()を入れないのでBSする手間が省けます。
・ターミナルは付属してますがFinderでファイルをコピーしてもフルパスでクリップボードに登録されないので不便。
→adb install {フルパス} ができない。
→adbコマンドは簡単なもののみintelliJで叩いてinstallは本家ターミナルで叩いてます。
・DDMSは別途Tool起動
→1つのTool内で簡潔したい人は不便でしょう。
→intelliJで出来るのはlogcatくらいです。
ただしアプリでのフィルターは自分で検索窓に打ち込む必要があります。
・デバッグは慣れが必要な気がします。
→僕はF6, F8でずっとやってきたのでどうしても未だにF6してしまう。
→あと、インスペクタはどれですか?
・apk書き出しは簡単
→一度keystoreとパスワード×2を登録してしまえば次からはクリックのみで署名付きapkにしてくれます。たまにマスターPass訊かれるけどそれでも簡単になります。
・Draw9patchはintelliJ内で起動。
→地味に便利だけどDDMSもやってほしかった。。。
・ソース管理
→Git、SVNはデフォルトで使える。
・DB管理
→有料版にはViewerがあるとか。
とりあえずこれくらい。他にもあった気しますが。。。
総じてメリットデメリットありますが、個人的にはメリットが上回ってます。
なのでとりあえずこれからも使っていきます。
2013年9月27日金曜日
Jenkins導入①
Androidのテストをある程度自動化したいためJenkinsを導入することにしました。
将来的にはサーバーを立ててメンバーで共用する予定ですが とりあえず練習がてら自端末に導入してみます。
オフィシャルサイトからパッケージがDLして楽々インストールしようと思ったのですが、Mac版がDLできなかったので先人たちの知恵を借りてターミナルからインストールすることに。
Homebrew導入
http://qiita.com/skinoshita/items/fd146ac223bab433b348
Jenkins導入
http://tech.hazi.jp/2012-08/13/
おおー動いてるー!!

これから設定に入ります。
将来的にはサーバーを立ててメンバーで共用する予定ですが とりあえず練習がてら自端末に導入してみます。
オフィシャルサイトからパッケージがDLして楽々インストールしようと思ったのですが、Mac版がDLできなかったので先人たちの知恵を借りてターミナルからインストールすることに。
Homebrew導入
http://qiita.com/skinoshita/items/fd146ac223bab433b348
Jenkins導入
http://tech.hazi.jp/2012-08/13/
おおー動いてるー!!

これから設定に入ります。
2013年3月8日金曜日
HTC J(butterfly)のメニューバー(…)を消す
HTC Jの端末で2.X系のアプリを使ったときに画面下部に出る・・・の黒いバー。
自分でも邪魔だと思ってたんですが、カメラ系を開発したときにあいつのせいで
プレビューサイズと誤差が現れます。
2.X系のアプリでも消す方法を探していたのですが
マニフェストのターゲットSDKバージョンを14に変える。
プロパティのbuild targetは9のまま。
で解決しました。
僕も勘違いしてたのですが、↑のふたつの要素はまったく別ものだったんですね。
ターゲットSDKは14〜の端末で14のスタイルとか振る舞いをするってだけ。
なんて簡単!!
2013年2月8日金曜日
Androidで国番号の取得
仕事でSimの電話番号と国コード(よく見る+81とか)を取得する必要があって
そこそこ悩んだのでメモ。
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = telephonyManager.getLine1Number();
String iccid = telephonyManager.getSimSerialNumber();
Log.d(getClass().getSimpleName(), "TelephoneNumber " + number);
Log.d(getClass().getSimpleName(), "ICCID " + iccid);
//R.string.tel_formatの中身は+%1$s %2$s-%3$s-%4$s
String internationalTelephoneNumber =
getString(R.string.tel_format,
iccid.substring(2, 4),
number.substring(1, 3),
number.substring(3, 7),
number.substring(7, 11));
Log.d(getClass().getSimpleName(), "InternationalTelephoneNumber " + internationalTelephoneNumber);
良い感じに取得できた。
2012年12月19日水曜日
Facebook graph Apiで写真URLつき投稿
Facebookへの写真URLつき投稿。
自分のFeedに流れるやつです。
写真をクリックすると写真が貼ってある外部ページに飛びます。
link要素を付与するとシェア扱い。
pictureを無効にすると普通のFeedに。
この内容だと写真が外部にあるものになりますが、Facebook上のアルバムにUPするためには別途画像データをバイナリで渡す必要があります。
getContentsByGet部分は省略しました。内容はHttpClientでPostしているだけです。
自分のFeedに流れるやつです。
写真をクリックすると写真が貼ってある外部ページに飛びます。
link要素を付与するとシェア扱い。
pictureを無効にすると普通のFeedに。
この内容だと写真が外部にあるものになりますが、Facebook上のアルバムにUPするためには別途画像データをバイナリで渡す必要があります。
Builder urlBuilder = new Builder();
urlBuilder.scheme("https");
urlBuilder.authority("graph.facebook.com");
urlBuilder.path("/me/feed");
urlBuilder.appendQueryParameter("format", "json");
urlBuilder.appendQueryParameter("method", "POST");
urlBuilder.appendQueryParameter("message", message);
urlBuilder.appendQueryParameter("link", params.url);
urlBuilder.appendQueryParameter("picture", imageUrl);
urlBuilder.appendQueryParameter("access_token", facebookToken);
String url = urlBuilder.toString();
String contents = getContentsByGet(url);
getContentsByGet部分は省略しました。内容はHttpClientでPostしているだけです。
Android4.0でタッチフォーカス(マニュアルフォーカス)実装
Androidのカメラアプリでのオートフォーカス実装は何度もやったけど
マニュアルフォーカス(MF)は未経験でした。
デフォルトカメラアプリには往々にしてMFがありますが マーケットアプリにはほとんどない現状。
カメラアプリを貪っていると唯一lgcameraが実装してました(他にもいっぱいあると思うんですが見つけられなかった。。。)
でも2.XシリーズだとMFが動かずICSだとMFが効く。
ということはネイティブでMFやるにはICSが必要ということか。
勉強不足を実感しました。。。
調べたところCAMERAクラスのsetFocusAreasを利用することでcamera#autofocusのfocusのエリアを変えられる模様。
touchイベントからとったview座標をプレビューの座標に変換。
デフォルトカメラアプリには往々にしてMFがありますが マーケットアプリにはほとんどない現状。
カメラアプリを貪っていると唯一lgcameraが実装してました(他にもいっぱいあると思うんですが見つけられなかった。。。)
でも2.XシリーズだとMFが動かずICSだとMFが効く。
ということはネイティブでMFやるにはICSが必要ということか。
勉強不足を実感しました。。。
調べたところCAMERAクラスのsetFocusAreasを利用することでcamera#autofocusのfocusのエリアを変えられる模様。
touchイベントからとったview座標をプレビューの座標に変換。
座標をRectに変換。
weight(よく分からないけど1000で良い感じになった)と一緒にList<Camera.Area>型でCamera.ParametersのsetFocusAreasに渡してやればフォーカスエリアの変更完了。
Viewには何の変化もないけど、同じタイミングでautofocus(null)を呼んであげると
フォーカスエリアが変化していることが分かり易いはず。
ただし、端末のカメラが対応していないと落ちるので
Camera#getParameters().getMaxNumFocusAreas()>0
のときだけ使うようにしましょう。
ちなみに同じ方法で測光を行うsetMeteringAreasも使えます。
登録:
投稿 (Atom)