c#写手机安卓交互式地图(1)
来源:互联网 发布:淘宝卖家怎么处理退货 编辑:程序博客网 时间:2024/06/05 02:27
第一次写正式的博客,还是有点小激动。算是毕业设计的第一步,本文仅为记录过程及遇到的问题,同时我还只是一个c#和安卓的菜鸟,希望能通过记录自己得到提高。以下是正文。
采用的语言和工具
xamarin :基于C#与·NET框架的开源、跨平台实现。具体教程参考官网
vs2017:大家都懂得,安装xamarin开发包和自己需要的一些组件,包很大,大约30G,可以为自己换电脑加个理由。
百度地图sdk和api:因为不止要做移动端,还要定位服务器,所以也需要web开发的api,具体步骤要参考百度地图开发者中心的教程。其他需要的以后再加。
第一步开始
下载百度地图的SDK,创建Android绑定库项目,将jar文件和so文件放入jars文件夹下。修改jar文件属性中生成操作为EmbeddedJar,so文件属性生成操作为EmbeddedNativeLibrary。开始生成
接下来一定会有问题>_<
我感觉这是因为c#对jar包解析的不够准确,导致有重名方法,网上也有相关的一些说明,以下是我的解决办法,在metadata.xml文件里添加如下代码。
<attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="name">AddressInfo</attr> <attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="name">VersionInformation</attr> <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B']/field[@name='b']" name="name">BField</attr> <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='E']/field[@name='e']" name="name">EField</attr> <attr path="/api/package[@name='com.baidu.mapapi.map']/interface[@name='BaiduMap.OnMapStatusChangeListener']/method[@name='onMapStatusChangeStart' and count(parameter)=2 and parameter[1][@type='com.baidu.mapapi.map.MapStatus'] and parameter[2][@type='int']]" name="managedName">OnMapStatusChangeStart2</attr>
个人感觉还是能够解决大多数问题。
APP制作开始,我在电脑上下了一个网易MOMO的虚拟机。别问我为什么不用真机调试(云OS伤不起),在和前面那个项目同一个解决方案下新建安卓空白应用,成功后添加引用,如下图
项目->解决方案找到对应的项目名称。
然后开始撸代码。。。
第一次只是一个简单的地图展示更多功能请参阅百度地图帮助文档。
在布局中添加Mapview组件(好像不太推荐用这个了,不过这还是官方的示例)
在AndroidManifest.xml 添加如下代码,作用主要是获得权限
<application android:allowBackup="true" android:label="@string/app_name"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你的KEY" /> </application> <!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
activity.cs改成
using Android.App;using Android.Widget;using Android.OS;using Com.Baidu.Location;using System.Text;using Com.Baidu.Mapapi;using Com.Baidu.Mapapi.Map;namespace NewMap{ [Activity(Label = "NewMap", MainLauncher = true)] public class MainActivity : Activity { MapView mMapView = null; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SDKInitializer.Initialize(ApplicationContext); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); mMapView = FindViewById<MapView>(Resource.Id.bmapView); } protected override void OnResume() { base.OnResume(); // Always call the superclass first. mMapView.OnResume(); } protected override void OnDestroy() { base.OnDestroy(); mMapView.OnDestroy(); } protected override void OnPause() { base.OnPause(); mMapView.OnPause(); } }}
OK 进行调试,MOMO的端口是7555,其他模拟器自己查。命令行执行adb connect 127.0.0.1:端口号。成功后就能找到你的模拟器,当然记得改最低支持版本,现在的模拟器安卓版本都比较低。就不上图了
- c#写手机安卓交互式地图(1)
- 15个JavaScript库实现手机交互式地图资源
- 安卓 导入高德地图 手机定位功能
- 关于安卓百度地图自定义指针旋转角度问题(第一次写博客)
- 一个安卓小项目(4)——安卓获取手机IMEI号及写配置文件
- 交互式地图的思考
- 安卓应用百度地图API(1)-keytool
- 安卓开发---高德地图(1) 显示一张简单地图
- 安卓开发高德地图(1)—— 地图的显示
- C#通过ADB和UiAutomator实现对安卓手机的控制(一)
- 百度安卓地图学习(一)
- 百度安卓地图学习(二)
- 百度安卓地图学习(三)
- 安卓开发,高德地图5.0版本导航部分手机出现白屏
- (unity)用SQLite Manager工具写好的数据库sqlite文件如何随着发布导入安卓手机
- 安卓开发基础知识1(双摄像头安卓手机)
- 安卓手机1px问题
- 手机定位折腾记(1):安卓手机的网络定位与NetworkLocation.apk
- jsp从session中取空值的问题
- ubuntu下查看gpu情况
- MPAndroidChart的折线图的使用及封装
- vsftpd配置文件详解
- 20 个快速高效学习 Java 编程在线资源
- c#写手机安卓交互式地图(1)
- Google C++ Style Guide中英对照(一)
- CCSv7使用指南连载0:软件下载及安装
- 可迭代对象&迭代器
- Qt实用技巧:界面切换使用Dialog全屏切换
- 一些实用的网站
- java判断一个字符串是否是回文
- Java集合框架之ArrayList
- TensorFlow学习--GoogLeNet实现