カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

リンクでGoogleMap地図アプリを起動する

リンクを貼って指定した場所をGoogleMapの地図アプリで表示させることができます。
スマートフォン対応サイトや、メールで正確な場所を送りたいときに便利です。

メールで送る場合はURL部分だけでOKです。

※与える座標は世界測地系(WGS84)です。

<a href="http://maps.google.com/maps?q=35.65860811863414,139.7455318066551">地図を表示</a>

上記だと座標が名称として表示されるので、任意に名称を指定したい場合は以下のようにします。

<a href="http://maps.google.com/maps?q=35.65860811863414,139.7455318066551+東京タワー">地図を

表示</a>
14,335 views

GoogleMaps API v2 ビルドエラー

GoogleMaps API v2を使用したアプリを署名付きでビルドする際、以下のようなエラーが発生することがあるらしい。

"app_name" is not translated in af, am, ar, be, bg, ca, cs, da, de, el, en-rGB, es, es-rUS, et, fa, fi, fr, hi, hr, hu, in, it, iw, ja, ko, lt, lv, ms, nb, nl, pl, pt, pt-rPT, ro, ru, sk, sl, sr, sv, sw, th, tl, tr,  uk, vi, zh-rCN, zh-rTW, zu

どうやら翻訳に関するエラーらしい。
特に害はないので無視すればいいという記事もありました。
解決方法としては、translatable属性にfalseを設定すればいいらしい。

<string name="account_setup_imap" translatable="false">IMAP</string>

参考URL:
http://tools.android.com/recent/non-translatablestrings

リリースすることがないのであれば問題ありませんが、一旦エラーが出るとデバッグもできません。
その場合はプロジェクトを右クリックし、[Androidツール]-[Lintマーカーのクリア]を実行します。
31

メニューから[ウィンドウ]-[設定]-[Android]-[Lintエラー検査]-[アプリケーションのエクスポート時に完全エラー検査を実行し、致命的エラーが見つかった場合は中断する]のチェックを外す
32

2,181 views

Google Maps Android API v2

Google Maps Android API v2を使ってみました。
v2はv1とは互換性がありませんが、ベクター地図になり、視点の変更や屋内の地図表示等、色々便利になったようです。

Google Play Servicesライブラリ

まず、v2ではGoogle Play Servicesが必要になるので、Android SDK Managerで最新版をダウンロードし、インストールします。
1

Eclipseにて新規プロジェクトを作成します。
「既存コードからのAndroidプロジェクト」を選択し[次へ]
2
続きを読む…»

4,266 views

WebViewを使ったハイブリッドアプリの作成 [Android]

HTML5+JavaScriptを使ってスマホアプリを開発することもできます。
ネイティブとWebアプリの機能を兼ね備えた、俗にハイブリッドアプリと呼ばれるそうです。

ここで作成するのはハイブリッドというには簡単すぎるものですが、
触りとなるものです。

まず、メインとなるアクティビティを作成します。
サンプルですので、WebViewのみ表示するものとなっています。

public class SampleActivity extends Activity {

    private final int FC = ViewGroup.LayoutParams.FILL_PARENT;
    public static WebView web;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(1);

        setContentView(linearLayout);

        web = new WebView(this);
        linearLayout.addView(web, new LayoutParams(FC, FC));

        // JavaScriptを有効にする
        web.getSettings().setJavaScriptEnabled(true);

        // JavaScriptにAPIを追加する
        web.addJavascriptInterface(new JavaScriptObject(this), "myapi");

        // スクロールバーを非表示にする
        web.setHorizontalScrollBarEnabled(false);
        web.setVerticalScrollBarEnabled(false);

        // フォーカスを有効にする
        web.setFocusable(true);

        // assetsディレクトリに用意したHTMLを読み込み
        web.loadUrl("file:///android_asset/sample.html");
    }

}

29行目のフォーカスを有効にするというのはデフォルトで有効になっていますが、
敢えて明示的に有効にしています。
どういった場合に無効にするのかと言いますと、全画面表示のゲームを作成する場合等です。
無効にする場合は引数をfalseとします。

web.setFocusable(false);

更にその場合はスリープモードにしないようにもしておいたほうがよいでしょう。
onCreateの最後にでも記述しておきましょう。

// スリープモードにしないようにする
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

次に、JavaScriptのAPIとなるクラスを作成します。 続きを読む…»

7,392 views

カメラを扱うまとめ – Android

Androidでカメラを扱うまとめです。
単純に撮った写真を保存するパターンと、パラメーターを指定して保存するパターン、
撮影した画像を圧縮して保存するパターンの3パターンを紹介します。

まずは、カメラを使用するために必要なパーミッションをAndroidManifest.xmlに記述します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />

撮影処理をするSurfaceViewを継承したクラスを作成します。

まず、簡単に保存するパターン 続きを読む…»

4,802 views