Android関連

google Maps Android API v1 が終了し、v2へ以降しなければならないので、とりあえずメモ。

Google Play servicesのインストール

まず、eclipseから Android SDKを開き、extraにある、Google Play services をインストールする。

google Maps Android API v2 のAPIキーの取得

C:\ユーザーに,androidのディレクトリがある。その中に、デバッグ用のキー debug.keysotoreがある。

このフィンガープリントを取得する。 コマンドプロンプトを開いて以下を実行

#cmd{{ C:\>cd C:\Program Files\Java\jdk1.8.0_05\bin C:\Program Files\Java\jdk1.8.0_05\bin>keytool.exe -list -v

-keystore "C:\Users\ユーザー名\.android\debug.keystore"
-alias androiddebugkey -storepass android -keypass android

}}

実行すると以下の画面が出てくる。

#cmd{{ 別名: androiddebugkey 作成日: 2014/04/23 エントリ・タイプ: PrivateKeyEntry? 証明書チェーンの長さ: 1 証明書[1]: 所有者: CN=Android Debug, O=Android, C=US 発行者: CN=Android Debug, O=Android, C=US シリアル番号: 428ec618 有効期間の開始日: Wed Apr 23 21:27:45 JST 2014終了日: Fri Apr 15 21:27:45 JST 20 44 証明書のフィンガプリント:

        MD5:  F8:??:..
        SHA1: EB:??:..
        SHA256: 2F:??:...
        署名アルゴリズム名: SHA256withRSA
        バージョン: 3

}}

このsha1 の内容をコピーする。

https://code.google.com/apis/console/ へ行く。 プロジェクトから google map android v2 をオンにする。 Create new Android key をクリックし、先ほどコピーした SHA1を貼り付けて その後に ;com.example.googlemapsv2 (プロジェクト名) を書いて、Createを押すとApiキーが得られる。

マニュフェストの変更

AndroidManifest?.xml は次のようになっている。

java;highlight:[10,11,12,13,14,15,16,17,18,19,27,28,29,]

manifest xmlns:android="http://schemas.android.com/apk/res/android"

   package="com.example.googlemapsv2"
   android:versionCode="1"
   android:versionName="1.0" >
   <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="18" />
   
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="com.example.googlemapsv2.permission.MAPS_RECEIVE" />
   <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  
   <uses-feature
       android:glEsVersion="0x00020000"
       android:required="true" />
   <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       
      <meta-data
           android:name="com.google.android.maps.v2.API_KEY"
           android:value="APIキー" />
       <activity
           android:name="com.example.googlemapsv2.MainActivity"
           android:label="@string/app_name" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>

/manifest>

}}

google Play services APIライブラリの参照。

  1. プロジェクトの新規から、既存のAndroid codeを選択し、Androidをクリックし、ライブラリをSDKの中にある google-play-services_libを選択する。 D:\adt\sdk\extras\google\google_play_services\libproject\google-play-services_lib
  2. プロジェクトのプロパティを開く
  3. ライブラリからさきほどのファイルを指定する。

activity_main.xmlの変更

  1. [res/layout/activity_main.xml]を開く
    java;]

    ?xml version="1.0" encoding="utf-8"?>

    fragment

     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/map"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:name="com.google.android.gms.maps.SupportMapFragment"/>

    }}

MainActivity?の変更

  1. [MainActivity?.java]を開く。
  2. webView,WebViewClienet? をインポートする。
    java
    import android.webkit.WebView?; import android.webkit.WebViewClient?; }} importの部分は、折りたたまれているので、+を押して展開するとよい。
  3. setContentView?(R.layout.activity_main); のあとに以下を追加する。
    java
           //レイアウトで指定したWebViewのIDを指定する。
           WebView  myWebView = (WebView)findViewById(R.id.webView1);
       //リンクをタップしたときに標準ブラウザを起動させない
       myWebView.setWebViewClient(new WebViewClient());
       //最初にYahoo! Japanのページを表示する。
       myWebView.loadUrl("http://www.yahoo.co.jp/");

}} 大文字と小文字は区別する。

  1. 赤波線が出たら一番上のを選択しておく。 上の手順で行うと、R.id.webView1に赤波線がつくはずである。これは、リソース R.java にID webView1 が登録されていない。赤波線をクリックして、IDを登録しておこう。

R.javaの中身は以下の通り。

java;highlight:[19]

/* AUTO-GENERATED FILE. DO NOT MODIFY.

*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package com.example.mywebview;

public final class R {

   public static final class attr {
   }
   public static final class drawable {
       public static final int ic_action_search=0x7f020000;
       public static final int ic_launcher=0x7f020001;
   }
   public static final class id {
       public static final int menu_settings=0x7f070000;
		public static int webView1;
   }
   public static final class layout {
       public static final int activity_main=0x7f030000;
   }
   public static final class menu {
       public static final int activity_main=0x7f060000;
   }
   public static final class string {
       public static final int app_name=0x7f040000;
       public static final int hello_world=0x7f040001;
       public static final int menu_settings=0x7f040002;
       public static final int title_activity_main=0x7f040003;
   }
   public static final class style {
       public static final int AppTheme=0x7f050000;
   }

} }}

エミュレータを起動し、Yahoo! Japanのウェブサイトが表示されます。WebView?でJavascriptが有効化されていないので、「Javascriptが無効です」と表示されるはずです。 File not found: "webview05_0.jpg" at page "google Maps Android API v2を使った地図の表示"[添付]

アプリ内にHTMLファイル一式を保存するときは、 assetの中に保存し、URLを[file:///android_asset/index.html]などと指定するとよい。

プログラム

MainActivity?.javaの中身は以下の通り

java

package com.example.mywebview;

import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.webkit.WebView?; import android.webkit.WebViewClient?;

public class MainActivity? extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       
       //レイアウトで指定したWebViewのIDを指定する。
       WebView  myWebView = (WebView)findViewById(R.id.webView1);
       
       //リンクをタップしたときに標準ブラウザを起動させない
       myWebView.setWebViewClient(new WebViewClient());
       
       //最初にYahoo! Japanのページを表示する。
       myWebView.loadUrl("http://www.yahoo.co.jp/");
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.activity_main, menu);
       return true;
   }

} }}

WebViewを使ったアプリ作成その2


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-22 (金) 20:06:00 (1373d)