投稿

ラベル(android)が付いた投稿を表示しています

Android 4.2の開発者向けオプションを表示する。

イメージ
Nexus7向けにもAndroid 4.2が配布され早速アップデート。    ところが、設定メニュー内から「開発者向けオプション」が消え去ってしまいました。 Developersサイト を覗いてみると無くなったのではなく、ディフォルトでは表示されなくなっただけでした。 ※開発者向けオプションを非表示に戻す方法は不明です。 On devices running Android 4.2, developer options are hidden by default, helping to create a better experience for users. You can reveal the developer options at any time by tapping 7 times on  Settings  >  About phone  >  Build number  on any compatible Android device. 「タブレット情報/ビルド番号」をポチポチと続けてタップするとカウントダウンが表示されて・・・ 無事に・・・ 表示されました。

Nexus7で実機デバッグしてみた

イメージ
久しぶりのAndroidネタです 念願のAndroid実機を購入しました。 Nexus7 です。 WiFi専用機ですが、全キャリアがテザリング対応時代になった現在、なんら困ることは無いですし、この機能でイチキュッパと財布にも優しいマシンです! ところで、PC上でのAndroidエミュレータの重さにうんざりしていましたので、USBデバッグを試してみました。 1.Nexus7側の準備 まずは、設定メニューの「開発者向けオプション」に入ります。 初期設定では無効になっています。 右上のスイッチをOFF→ONに切り替え 開発者オプションの設定が可能になります。 USBデバッグにチェックを入れます。 次に、設定メニューに戻って「セキュリティ」設定に入ります。 自作アプリをインストール可能とする為に、提供元不明アプリのインストールを許可します。 2.PC側の準備 まず、Androidの開発環境は構築済みでしょうか?まだならEclipse及びSDKをセットアップしておきます。 この状態でUSBケーブルでPCに接続すると、USBドライバが2種類インストールされます。 Nexus7内のストレージをフォルダとしてアクセスする為のドライバと、USBデバッグに必要なドライバです。 USBデバッグ用のドライバはSDKに含まれていますので、Windowsの自動認識で失敗したら、「...\android-sdk\extras\google\usb_driver」フォルダを探すように指定すればセットアップされます。 但し、SDKは最新にアップデートしておかないと、infファイルにNexus7用の設定が入っていないと思いますので注意! 無事にドライバがインストールされたら、実機デバッグが可能になります。 3.Eclipseから実機ラン テスト用にAndroidの新規プロジェクトを作成しました。 Google純正マシンだけあって、Nexus7の画面レイアウト用パラメタが用意されてました。 実行時にエミュレータと実機を選択できる様に、ポチっておきます。 実行すると以下の様な選択画面がでてきて、実機が正常に繋がっていれば、Nexus7がonlineになっているはずです。...

Androidアプリにルート表示する(その6)

デコーダに関する問い合わせが多いので、恥かしながら公開しちゃいます。 本業はハードエンジニアなので質は問わないでくださいね m(--)m デコード処理 public class decoder { public static boolean LogPrint,LogPrint2; //デバッグ用フラグ public static ArrayList<GeoPoint> decPolylines(StringBuffer polylines) { ArrayList<Double> point = decode(polylines); ArrayList<GeoPoint> ret = new ArrayList<GeoPoint>(); int lat=(int)(point.get(0)*1E6); int lng=(int)(point.get(1)*1E6); ret.add(new GeoPoint(lat,lng)); for(int i=2;i<point.size();) { lat=lat+(int)(point.get(i++)*1E6); lng=lng+(int)(point.get(i++)*1E6); ret.add(new GeoPoint(lat,lng)); } return ret; } private static ArrayList<Double> decode(StringBuffer input) { ArrayList<Double> ret =new ArrayList<Double>(); ArrayList<Byte> bit =new ArrayList<Byte>(); ArrayList<Byte> num =new ArrayList<Byte>(); // エスケープされている「\」を削除 while(true) { int i=input.indexOf("\\"+"\...

Maps for Android

イメージ
MapionのAPI の安定版がリリースされていたので Google 地図と表示比較 情報量はMapionの方が若干多いようです。 但し、Mapionの地図は日本のみです。 好み次第だが、Googleの方が見易い。 MapionのTexture地図は、旅行のプランニングをしたり、この地図を眺めながら戦国時代の小説を読めば、臨場感が増して楽しい! Google版 Mapion版 Standard表示とTexture表示

Androidアプリにルート表示する(その5)

イメージ
先日デコードした "overview_polyline"から得られた経緯度を直線でつないでみた結果 うまくいった! マップをズームしてみると、 予想通りルートの東名高速道路とズレが目立つ。 同じ "overview_polyline"による描画でも、 ルート検索対象の地点が近いと、ズームしても道路に忠実な経路が得られた。 うまくできてますね~。 ブラウザ上のgooglemapの様に描画するには、"levels"の解釈。 "overview_polyline"と 区間データ内の"polyline"との使い分けが必要なようです。 続く

Androidアプリにルート表示する(その4)

イメージ
Google Directions API  から取得したJSONデータ内にある"overview_polyline"データを、先日作成したデコーダを通して得られる経緯度点をオーバーレイ描画してみた結果 思惑通り、ルートに従った緻密な点が得られた。 但し、地図をズームしていくと荒さが目だってくるので、拡大した場合は、区間データに含まれる"polyline"データに切り替える事で、WEBページ上のグーグルマップと同品質の表示が可能になるのであろう。 続く

Androidアプリにルート表示する(その3)

apiから取得したpolylineをデコードする。 googleから エンコード化ポリライン アルゴリズム方式 が公開されているので、この記述に 従って エンコーダを書いてみたが結果が同じにならず、デバッガで追い掛けながら、あーだこーだと 相当苦労した。 結論としては、この文書の記述は不正確な部分や端折ってある部分のある事が判明。 以下コードは、色々な経緯度で試してみましたが、完全である保障は無いので注意ください。 private static StringBuffer encoderPosi(int num) {   ArrayList<Byte> bit =new ArrayList<Byte>();   StringBuffer ret = new StringBuffer();  num=num<<1;  if(num <0)                   //負値の場合はビット反転  {   num=~num;  }   for(int i=0;i<6;i++)               //5bit毎に分割   {      bit.add((byte)(num&0x1f));    num=num>>>5;   }   for(int i=bit.size()-1;i>=0;i--)         //不要な0データ削除   {    byte n=bit.get(i);    if(n==0){     bit.remove(i);    }else{    break;    }   }   for(int i=0;i<bit.size()-1;i++)         //0x20論理和(最終データは除く)   {    bit.set(i, (byte) (bit.get(i)|0x20));   }   for(int i=0;i<bit.size();i++)                      //63加算   {    bit.s...

Androidアプリにルート表示する(その2)

イメージ
JSONをパースして、ルートの区間地点を表示してみる。 受信データ (Osaka->Tokyo、Drivingモード) { "status": "OK", "routes": [ { "summary": "東名高速道路", "legs": [ { "steps": [ { "travel_mode": "DRIVING", "start_location": { "lat": 34.6938100, "lng": 135.5010800 }, "end_location": { "lat": 34.6925800, "lng": 135.5009600 }, "polyline": { "points": "icwrEw``zXtFV", "levels": "BB" }, "duration": { "value": 11, "text": "1分" }, "html_instructions": "ルートの説明", "distance": { "value": 137, "text": "0.1 km" } },  ・・・終点まで...

Androidアプリにルート表示する(その1)

googleAPI でAndroidアプリ上への地図表示は簡単にできた。 しかし、ルート検索機能は公開されておらずブラウザ経由での表示しかできない。 で、自作してみる事にした。 WEBAPIを使ってルート検索結果を取得して、ルート表示データ(polyline)を使って表示した地図上に描画できるのは? ルート検索用のAPIは Google Directions API を使用。 JSONまたはXMLでレスポンスが得られるようで、データ量がコンパクトなJSONを選択。 DefaultHttpClient を使用して、 http://maps.google.com/maps/api/directions/json?origin=Osaka&destination=Tokyo&mode=driving&sensor=false てな感じでレスポンスを取得 取得したjsonファイルのパース処理へ続く。