ホームページ >php教程 >php手册 >【Android】第3章(1) 百度地図とそのアプリ ~予備知識~

【Android】第3章(1) 百度地図とそのアプリ ~予備知識~

WBOY
WBOYオリジナル
2016-07-06 13:30:211459ブラウズ

カテゴリ: C#, Android, VS2015, Baidu マップ アプリケーション; 作成日: 2016-02-04 1. 概要 この章では、まず興味深い Baidu マップ アプリケーションの例を紹介し、次に C# を使用した Android アプリの開発の各章を詳しく紹介します。基本的な技術。 この章では、2016 年 1 月に Baidu の公式 Web サイトでリリースされた地図 API (バージョン 3.7.1) を例に、C# と VS2015 を使用してコンパイルする方法を説明します

カテゴリ: C#、Android、VS2015、Baidu 地図アプリケーション; 作成日: 2016-02-04

1.概要

この章では、いくつかの興味深い Baidu マップ アプリケーションの例から始まり、その後、C# を使用して Android アプリを開発するためのさまざまな基本テクノロジを各章で詳細に紹介します。

この章では、2016 年 1 月に Baidu の公式 Web サイトでリリースされた地図 API (バージョン 3.7.1) を例として、C# と VS2015 を使用して Baidu 地図アプリケーションを作成する方法を説明します。これらのサンプル プログラムは、Android 6.0 の x86 エミュレータで実行できます。または Android 4.0 以降を実行している携帯電話に公開して、実際のランニング効果をテストすることができます。

1. 公式ウェブサイトから提供されるデモをダウンロードします

まず次の URL にアクセスしてください:

http://developer.baidu.com/map/

ウェブページを開いた後、[開発] à [Android 開発] で最初の項目「Android Map SDK」を選択し、ウェブページ上の [関連ダウンロード] をクリックすると、次のインターフェースが表示されます。

【Android】第3章(1) 百度地図とそのアプリ ~予備知識~

[カスタムダウンロード]をクリックし、ポップアップインターフェイスでナビゲーション機能を除くすべてを選択し、次の手順で使用できるようにコンピューターにダウンロードしてフォルダーに抽出します。

2. Gaxaxy_Api23_x86 シミュレーターを使用して実行結果を観察します

MapView がハードウェア アクセラレーションを使用する場合の問題を解決するために、Baidu は TextureMapView コントロールを提供してマップをレンダリングするときに、シミュレーターの開発者向けオプションを変更する必要があります。

TextureMapView を使用して Baidu マップを表示するには、次の条件を満たす必要があります:

    公式サンプルのすべての MapView を、TextureMapView コントロールを使用して表示するように変更します。
  • エミュレータの開発者向けオプションを変更し、エミュレータが「GPU レンダリングを強制」できるように設定します (下の図を参照)。

【Android】第3章(1) 百度地図とそのアプリ ~予備知識~

これら 2 つの条件が満たされると、百度地図が正常に表示されます。

今後は、ハードウェア アクセラレーションを使用しない ARM シミュレーターの特別な「遅さ」に耐える必要はなくなります。次の例は、ハードウェア アクセラレーションを使用した x86 シミュレーターを使用して引き続き実証されます。

もちろん、携帯電話を直接使用してデバッグおよび実行することもできます (これは推奨されるデバッグ方法です。携帯電話をコンピュータに接続すると、ドロップダウン ボックスに携帯電話のオプションが直接表示されます)ただし、携帯電話でスクリーンショットをデバッグするのは面倒なので、ここではシミュレータを使用してデバッグします。

2. BdMapV371BindingLib ソリューションを作成します

ソリューションとプロジェクト名: BdmapV371BindingLib

テンプレート:バインディングライブラリ(Android)

バインディング ライブラリを作成する目的は、Baidu Map SDK 3.7.1 バージョンのすべての .jar ファイルを .cs ファイルに自動的に変換し、対応する .dll ファイルを生成することです。変換後、生成された .dll ファイルをアプリケーション プロジェクトで参照できるようになります。 。

これは、.jar ファイルを .cs ファイルに変換する最も一般的な方法でもあります。

1.JARファイルを追加します

以下のファイルをプロジェクトのjarsフォルダーにコピーし、これらすべてのファイルの[Generation Operation]属性を「EmbeddedJar」に変更します。

BaiduLBS_Android.jar

IndoorscapeAlbumPlugin.jar

2. Xamarin.Android.Support.v4 の最新の安定バージョンへの参照を追加します

[参照] à [NuGet パッケージの管理] を右クリックし、Xamarin.Android.Support.v4 の最新の安定バージョンへの参照を追加します。Xamarin.Android.Support.v4.23.1.1.0 を追加しました。

3. Metadata.xml ファイルを変更します

Transforms フォルダーの下にある Metadata.xml ファイルを開き、次の内容に変更します。 リーリー

4. BaiduMapOptions.cs ファイルを追加します

このファイルを Additions フォルダーに追加し、次のように変更します:

リーリー

このファイルの目的は、パラメーターなしでコンストラクターを提供することです。このファイルを追加しない場合、後続のセクションのデモ プロジェクトで BaiduMapOptions のインスタンスを直接作成できません (このセクションでは使用されません)。

5.dllファイルを生成します

プロジェクト名を右クリックして[生成]を選択すると、[出力]ウィンドウにコンパイルが成功したことが表示されます。

========== すべて再生成: 1 成功、0 失敗、0 スキップ ==========

このようにして、bindebug フォルダーに BdMapV371BindingLib.dll が正常に生成され、今後この .dll ファイルをサンプル プロジェクトで参照できるようになります。

3. BdMapV371Demos ソリューションを作成し、開発キーを取得します

ソリューションとプロジェクト名: BdmapV371Demos

テンプレート:空のアプリ(Android)

开发百度地图应用程序时,需要先在百度官网上申请一个开发密钥,百度的开发密钥由“SHA1+包名”组合组成,这是为了让一个项目唯一对应一个申请的密钥(key)。密钥申请成功后,才能在对应的项目中使用百度地图API。

1、修改AndroidManifest.xml文件

修改BdMapV371Demos项目的该文件,将其改为下面的内容:

<?xml version=<span style="color: #800000;">"<span style="color: #800000;">1.0</span><span style="color: #800000;">"</span> encoding=<span style="color: #800000;">"</span><span style="color: #800000;">utf-8</span><span style="color: #800000;">"</span>?>
<manifest xmlns:android="<span" style="color: #800000;">"<span style="color: #800000;">http://schemas.android.com/apk/res/android</span><span style="color: #800000;">"</span> package=<span style="color: #800000;">"</span><span style="color: #800000;">BdMapV371Demos.BdMapV371Demos</span><span style="color: #800000;">"</span> android:versionCode=<span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span> android:versionName=<span style="color: #800000;">"</span><span style="color: #800000;">1.0</span><span style="color: #800000;">"</span> android:installLocation=<span style="color: #800000;">"</span><span style="color: #800000;">auto</span><span style="color: #800000;">"</span>>
    <uses-sdk></uses-sdk>
    <application android:label="<span" style="color: #800000;">"<span style="color: #800000;">BdMapV371Demos</span><span style="color: #800000;">"</span> android:theme=<span style="color: #800000;">"</span><span style="color: #800000;">@style/MyCustomTheme</span><span style="color: #800000;">"</span>>
        <meta-data android:name="<span" style="color: #800000;">"<span style="color: #800000;">com.baidu.lbsapi.API_KEY</span><span style="color: #800000;">"</span> android:value=<span style="color: #800000;">"你申请的密钥</span><span style="color: #800000;">"</span> />
        <service android:name="<span" style="color: #800000;">"<span style="color: #800000;">com.baidu.location.f</span><span style="color: #800000;">"</span> android:enabled=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span> android:PRocess=<span style="color: #800000;">"</span><span style="color: #800000;">:remote</span><span style="color: #800000;">"</span> />
    </service></meta-data></application>
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.WAKE_LOCK</span><span style="color: #800000;">"</span> />
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">com.android.launcher.permission.READ_SETTINGS</span><span style="color: #800000;">"</span> />
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.WRITE_SETTINGS</span><span style="color: #800000;">"</span> />
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.INTERNET</span><span style="color: #800000;">"</span> />
    <!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.access_COARSE_LOCATION</span><span style="color: #800000;">"</span> />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.ACCESS_WIFI_STATE</span><span style="color: #800000;">"</span> />
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.ACCESS_NETWORK_STATE</span><span style="color: #800000;">"</span> />
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.CHANGE_WIFI_STATE</span><span style="color: #800000;">"</span> />
    <!-- 用于读取手机当前的状态-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.READ_PHONE_STATE</span><span style="color: #800000;">"</span> />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.WRITE_EXTERNAL_STORAGE</span><span style="color: #800000;">"</span> />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.MOUNT_UNMOUNT_FILESYSTEMS</span><span style="color: #800000;">"</span> />
    <!--允许应用读取低级别的系统日志文件 -->
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.READ_LOGS</span><span style="color: #800000;">"</span> />
    <uses-permission android:name="<span" style="color: #800000;">"<span style="color: #800000;">android.permission.ACCESS_SURFACE_FLINGER</span><span style="color: #800000;">"</span> />
    <!--
  <uses-permission android:name=<span style="color: #800000;">"</span><span style="color: #800000;">android.permission.ACCESS_FINE_LOCATION</span><span style="color: #800000;">"</span> />
    <uses-permission android:name=<span style="color: #800000;">"</span><span style="color: #800000;">android.permission.LOCATION_HARDWARE</span><span style="color: #800000;">"</span> />
    <uses-permission android:name=<span style="color: #800000;">"</span><span style="color: #800000;">android.permission.SET_ANIMATION_SCALE</span><span style="color: #800000;">"</span> />
  -->
    <supports-screens android:anydensity="<span" style="color: #800000;">"<span style="color: #800000;">true</span><span style="color: #800000;">"</span> android:largeScreens=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span> android:normalScreens=<span style="color: #800000;">"</span><span style="color: #800000;">false</span><span style="color: #800000;">"</span> android:resizeable=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span> android:smallScreens=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span> />
</supports-screens></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></manifest>

2、运行项目得到SHA1

键运行项目,在输出窗口中找到下面这一行:

D/auth info( 3210): mcode: 【……】;BdMap361Test.BdMap361Test

其中,分号前的【……】就是SHA1,复制它,以备下一步申请密钥用。

说明:创建另一个解决方案和项目时,只要你的开发环境不变,调试模式的SHA1还是这个值(这个值与是哪个项目无关,而是与debug.keystore文件有关),所以最好把这个SHA1保存在单独的文档中,以便以后用它申请多个开发密钥。

当然,由于这一步还没有完成密钥申请的第2步,现在还看不到地图。

实际上,你稍微观察一下输出窗口,就会发现当你按键调试运行后,系统首先自动执行的就是下面介绍的这些命令。或者说,这些步骤是系统自动完成的,不需要你去做。这里之所以解释一下这些命令的含义,目的只是为了帮你理解它是如何得到SHA1并自动显示出来让你去使用的):

对于Windows操作系统来说,默认情况下,可以在以下位置找到Xamarin.Android调试版本的用于应用程序签名的密钥库:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

通过JDK提供的keytool命令,可得到密钥存储库的信息。对于Windows系统来说,keytool的位置为:C:\Program Files (x86)\java\jdk1.7.0_79\bin keytool.exe。

在VS2015中的使用办法为(不需要你去配置环境变量):依次单击【工具】à【Android】à【Android Adb Command Prompt】,这样就进入了命令行模式。

在命令行模式下,可使用下面的命令形式运行keytool工具:

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWord] -keypass [KEY PASSWORD]

键入的具体命令为(注意[USERNAME]应该替换为实际的名字):

C:\

cd\users\[USERNAME]\appdata\local\Xamarin\Mono for Android

keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

此时你在控制台窗口中将会看到下面的内容:

别名: androiddebugkey

序列号:……(此处省略了具体值)

有效期开始日期: ……(此处省略了具体值)

截止日期: ……(此处省略了具体值)

证书指纹:

md5: ……(此处省略了具体值)

SHA1: ……(此处省略了具体值)

SHA256:……(此处省略了具体值)

签名算法名称: SHA256withRSA

版本: 3

扩展

……

3、进入官网获取开发密钥

进入百度的官网(http://developer.baidu.com/map/),选择【开发】à【Andoid开发】下的第1项“Android地图SDK”,然后单击该网页中的【申请密钥(key)】,选择【进入新的key申请系统】,输入下面的信息:

应用名称:BdMapV371Demos

应用类型:Android SDK

数字签名(SHA1):

包名:BdMapV371Demos.BdMapV371Demos

对于C#项目来说,这里输入的包名实际上是“解决方案名.项目名”,并没有全部是小写字母的要求。

将上一步复制的SHA1粘贴到“数字签名(SHA1)”右侧的文本框中。

单击【提交】按钮,完成密钥申请。

4、将申请的密钥填入到配置文件中

修改AndroidManifest.xml文件,在Application中填入你刚申请的密钥。

以后再为新项目申请新的密钥时,只要开发环境不变,这个SHA1值就不会变化。以后再申请新的密钥时,直接填入这个SHA1值就行了。

接下来就可以逐步调试本章后面介绍的示例了。

【上一篇】第2章(2)PhonewordApp--第1个Andoid应用程序   【下一篇】第3章(2)创建本章示例项目

 


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。