当前位置: 代码迷 >> Android >> 关于Android引路蜂map应用源码的简单说明
  详细解决方案

关于Android引路蜂map应用源码的简单说明

热度:82   发布时间:2016-05-01 13:03:03.0
关于Android引路蜂地图应用源码的简单说明

前面完整的Android引路蜂地图应用源码下载 提供了源码下载,这里对这个项目做个简单的说明以方便阅读。

整个应用代码量在4000行左右,不算很大,下面是对代码中主要Package的说明:

文件名空行注释代码行说明
AboutActivity.java13447关于软件说明
app\GNavigatorApplication.java272393主应用类
app\SessionInfo.java9311保持一些全局变量
app\SharedMapInstance.java133818保存RasterMap类实例
app\SharedSearchResults.java12022保存查询结果
database\DatabaseAssistant.java4263122用于数据库访问,用来管理设备,这部分可以不看
database\DBAdapter.java2712677
database\DBMapper.java4387
database\DeviceDBMapper.java2086130
database\DeviceLocationHistoryDBMapper.java195660
database\PersistentFacade.java2816867
dataobject\Device.java14015设备定义,设备命令,这部分可以不看
dataobject\DeviceCommand.java7017
dataobject\DeviceLocationHistory.java507
device\AddDeviceActivity.java14170软件可以用来跟踪其他设备或者报告设备当前位置,这部分可以不看
device\DeviceCommandListActivity.java394202
device\DeviceControlTabActivity.java16180
device\DeviceInfoActivity.java8149
device\DeviceLocationHistoryListActivity.java19181
device\ManageDeviceListActivity.java444208
drawing\AndroidFont.java92717和Android平台相关的引路蜂图形接口实现
drawing\AndroidGraphics.java2015057
drawing\AndroidGraphicsFactory.java108323
drawing\AndroidImage.java2011465
gis\FileMapTiledZone.java172343用来访问离线地图文件
GNavigatorActivity.java8231516主Activity
GuidebeeMapView.java5225301地图View,可以自定义并扩展,支持Gesture缩放等
location\LocationService.java545590GPS服务
mapmode\MapModeListActivity.java161150选项地图模式界面
routing\RouteDetailActivity.java5234274显示详细路径
routing\RoutingActivity.java261159路径查询界面
search\SearchResultListActivity.java4125246查询结果
search\SearchSuggestionProvider.java209查询提示
settings\SettingsActivity.java192686软件设置界面
sms\DeviceMessage.java405控制设备的短消息处理,这部分可以不看
sms\DeviceMessageCenter.java7018
sms\DeviceMessageProcessor.java451209
sms\SmsMessageReceiver.java131528
ToolbarButton.java361259工具条自定义View

其中和Device相关的部分,包database, dataobject, device, sms 部分可以跳过不需要看,这部分和地图API使用关系不大,主要用来监视GPS设备或其它手机的位置。

drawing 包实现了地图API中和图形系统相关接口的Android平台上实现 ,引路蜂地图开发包中Gis.Drawing 类定义了几个抽象类或接口,对不同平台的图形系统进行了抽象。这些绘图的接口不同,如果在引路蜂地图开发包直接引用这些类方法,这样不同平台就会需要编译不同的开发包。通过抽象处理,引路蜂地图开发包并直接调用平台相关的图形类方法。而是通过 开发包 + 平台相关图形系统实现的方法,就可以实现跨平台.具体可以参见图形子系统。

GuidebeeMapView 主要用来显示地图,这个给出的是一个参考实现,支持触摸屏平移,事件你可以把地图放在任何可以显示Image对象的控件上,添加你自己的Logo,支持MultiTouch 缩放等,本身是个自定义View (为View的子类),你可以自由扩展其功能。

FileMapTiledZone 用来支持从文件读取离线地图,这部分代码可以不需修改应用到你自己编写的引路蜂地图应用中。

应用程序框架基于RoboGuice 以简化代码,关于RoboGuice的使用可以参见本博客 的Android RoboGuice 使用指南。

搜索使用Android平台的Search Framework。可以参见

App/Search/Invoke Search
App/Search/Query Search Results

再看一下项目的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.pstreets.navigator"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="4" />    <application        android:name=".app.GNavigatorApplication"        android:icon="@drawable/navigator"        android:label="@string/app_name"        android:screenOrientation="portrait"        android:theme="@android:style/Theme.Black.NoTitleBar" >        <activity android:name=".GNavigatorActivity" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>            <meta-data                android:name="android.app.default_searchable"                android:value=".search.SearchResultListActivity" />        </activity>        <activity            android:name=".search.SearchResultListActivity"            android:launchMode="singleTop" >            <intent-filter>                <action android:name="android.intent.action.SEARCH" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>            <meta-data                android:name="android.app.searchable"                android:resource="@xml/searchable" />        </activity>        <activity            android:name=".AboutActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".mapmode.MapModeListActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".routing.RoutingActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".routing.RouteDetailActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.ManageDeviceListActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.AddDeviceActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.DeviceControlTabActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.DeviceCommandListActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.DeviceInfoActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".device.DeviceLocationHistoryListActivity"            android:launchMode="singleTop" >        </activity>        <activity            android:name=".settings.SettingsActivity"            android:launchMode="singleTop" >        </activity>        <receiver            android:name=".sms.SmsMessageReceiver"            android:enabled="true" >            <intent-filter android:priority="1000" >                <action android:name="android.provider.Telephony.SMS_RECEIVED" />            </intent-filter>        </receiver>        <provider            android:name=".search.SearchSuggestionProvider"            android:authorities="com.pstreets.navigator.search.SearchSuggestionProvider" />    </application>    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_OWNER_DATA" />    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.VIBRATE" />    <uses-permission android:name="android.permission.SEND_SMS" />    <uses-permission android:name="android.permission.RECEIVE_SMS" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /></manifest>


使用的permission 需要有INTERNET(地图API需要访问网络) ,WRITE_EXTERNAL_STORAGE (离线地图需要访问SD卡)其它权限可以根据需要添加。
最后看一下软件的项目目录结构:

项目引用三个库,其中libgisengine.jar 为引路蜂地图API,其它两个为roboguice 库。 支持中英文两种资源 values-zh-rCN 为中文string 资源。



  相关解决方案