做个像样的智能应用
直到上一篇,我们说了开发应用当中必须的Titanium的基本功能。从这篇开始我们说说智能手机特有的GPS,照相机等功能。能够很方便使用GPS,照相机,加速度感应器等功能,并且不管是iPhone还是Android都是用同样的代码来实现也是Titanium的一点优势。
GPS信息和Map
Twitter中,也有发送位置信息的功能,所以这回我们扩展这部分发信功能。在前几回代码的基础上,我们修改代码后,发信页面将大概是下边这个样子:
按下左边的Location按钮后,在页面的下部将用地图表示出来现在的地理位置,在文本框中输入信息后,点击Post按钮发送带有现在位置信息的Tweet。如果不在Twitter中设置接收地址位置信息的话,即使发了GPS信息也将被无视。实际用的时候需要把设置变更一下。改变设置后,自己家的位置信息也有可能被公开,特别要注意不要在家里运行应用哦。
接下来我们就开始说一下怎么编写代码,在前几回我们做的message_windo.js中我们追加一下代码。
var mapview = Titanium.Map.createView(
{
width: 320,
height: 240,
top: 220,
mapType: Titanium.Map.STANDARD_TYPE,
region:{latitude:40.0, longitude:130, latitudeDelta:30, longitudeDelta:30},
animate:true,
regionFit:true,
}
);
mapview.hide();
win.add(mapview);
这部分代码是用来表示表示地图的。width, height, top等其他的UI控件的设置没有什么变化。需要注意的是region的参数。在这里设置的是地图中心的维度(latitude),经度(longitude),大小(latitudeDelta, longitudeDelta),这个也要按实际的地理范围来设置,例子里的代码大概是日本附近的位置。但是,这样的代码我们运行后,当按下Location按钮后,开始页面会表示出来,view做成后立即像mapview.hide()表示的View就消失了。
需要追加一下代码。
Titanium.Geolocation.purpose = 'Twitter Post';
function setCurrentPosition () {
Titanium.Geolocation.getCurrentPosition(
function(e) {
textArea.blur();
if (!e.success || e.error)
{
alert('Get GPS NG!');
return;
}
latitude = e.coords.latitude;
longitude = e.coords.longitude;
var currentPos = Titanium.Map.createAnnotation(
{
latitude:latitude,
longitude:longitude,
title:"Here",
pincolor:Titanium.Map.ANNOTATION_GREEN,
animate:true
}
);
mapview.addAnnotation(currentPos);
mapview.show();
mapview.setLocation(
{
latitude:latitude,
longitude:longitude,
latitudeDelta:0.01,
longitudeDelta:0.01
}
);
}
);
}
在这部分代码中,我们使用GPS获取位置信息,然后在刚才做的地图上表示出来现在的位置。而且会在现在的位置做一个标记。Titanium.Geolocation.purpose中设置的文字,将在使用该应用的用户使用该应用后,以Dialog的形式提示用户将要获取地理信息。iOS 4以后的版本中,必须设置这部分内容。
Titanium.Geolocation.getCurrentPosition是获取地理信息的函数,并设置回调函数,取得地理信息后,调用回调函数,并把结果e传递给回调函数。其中从e.coords对象我们可以获取现在的位置(coords.latitude, coords.longitude)和速度(coords.speed)以及朝向的角度(coords.heading)等信息。详细的信息内容可以查看
这里。
取得经度纬度数据后,使用Titanium.Map.createAnnotation创建在地图上做标记。再把做好的Annotation对象中,通过mapview的addAnnotation方法追击到地图上。
在这个代码中,表示Annotation之后,调用mapview.show()来隐藏开始表示的地图,然后通过setLocation滚动到现在的位置。
最后追加获取地理位置信息的按钮。
var locationButton = Ti.UI.createButton(
{
top: 170,
left: 10,
width: 100,
height: 44,
title: 'Location'
}
);
locationButton.addEventListener(
'click',
setCurrentPosition
);
win.add(locationButton);
追加这部分代码后,在页面上就能看到Location按钮了,点击该按钮后,就能表示现在的位置信息了。
往Twitter发信
到现在我们已经能够获取到位置信息了,但是还没有编写往Twitter发信的代码。
message_window.js的tweet函数的开始位置如下修改代码:
Ti.include("lib/twitter_api.js");
//initialization
Ti.App.twitterApi = new TwitterApi({
consumerKey:'YOUR_CONSUMER_KEY',
consumerSecret:'YOUR_CONSUMER_SECRET'
});
var twitterApi = Ti.App.twitterApi;
twitterApi.init();
var latitude;
var longitude;
function tweet(message) {
var params = {status: message};
if (latitude && longitude) {
params['lat'] = latitude;
params['long'] = longitude;
}
twitterApi.statuses_update(
{
onSuccess: function(responce){
alert('tweet success');
Ti.API.info(responce);
},
onError: function(error){
Ti.API.error(error);
},
parameters:params
}
);
}
在YOUR_CONSUMER_KEY 和 YOUR_CONSUMER_SECRET 中设置自己的Cunsumer Key和Consumer Secret。
这里,把latitude, longitude定义在函数的外边,然后在刚才说过的Titanium.Geolocation.getCurrentPosition方法当中把当前的位置信息数据设置进去。在tweet函数中使用相同的变量,取得位置信息后,往Twitter当中发信中。
实际发信成功后,能在发信的位置看到这样的Tweet泡泡。
刚才的代码中还有一个需要注意的地方,在开始的位置,把twitter_api.js文件include进来,以前的代码中使用oauth_adapter.js的地方变更来的。使用
twitter_api.js能够很轻松的做Twitter客户端。
为了让上边修改的代码能够动起来,我们还需要修改从table_view.js读入message_window.js并打开窗口的处理。具体是从Window对象的open()方法变为Ti.UI.currentTab.open方法。
总结
像这样我们能够很轻松的通过Titanium获取GPS信息和Map信息。在以后我们将陆续为大家说明如何使用照相机和加速度感应器功能。
- 大小: 98.3 KB
- 大小: 72.4 KB
分享到:
相关推荐
sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件 这个插件不再主动地维护 ***因为我不再使用 st2/st3 。 有人对 fork 感兴趣并维护它?替代插件:...
Android-titanium_mobile.zip,带有javascript的本地ios、android和windows应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友! 免费版功能: * 无时间限制 *...
[Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...
UX SDK是一套与产品无关的UI对象,可使用快速跟踪Android应用程序的开发。 另外,请查看的新开放源代码版本。 一体化 通过Maven声明依赖项: < groupId>com.dji</ groupId> < artifactId>dji-uxsdk</ ...
有关此工具的用途的更多信息,请查看:Android编译器指纹技术,使用APKiD检测盗版和恶意Android应用APKiD:适用于Android应用的PEiD安装pip install --upgrade wheel pip wheel --wheel-dir = / tmp / yara-python -...
Titanium官方移动终端开发API文档
贾米钛 这将JavaScript BDD框架带到了Titamium Mobile。 入门 制作目录并获取Jasmine Titanium cd Resources mkdir spec lib vendor cd vendor git clone ... Titanium Mobile 1.7.2或更高
Ti.PayPal是一个开源项目,旨在支持Appcelerator的Titanium Mobile中的PayPal iOS-SDK2.x。 该模块当前支持以下API: 简单付款 未来付款 商家配置 注意:这是Ti.PayPal的iOS版本。 您可能需要检查以获取Android...
TiInspector, 通过 Chrome DevTools调试 Titanium Mobile 应用程序 #Ti 检查器Ti检查器允许在 Chrome DevTools web界面中调试 Appcelerator Titanium 应用程序。工具通过将命令和消息转换为 Chrome 调试协议和 ...
等等的相关连结,希望能对开发Android应用程式有帮助。如有不完善的地方,欢迎加以补充! !另外如果分类有不妥的地方,或标示部清楚的地方,也欢迎提出! !Android版本分布Android Developers - Dashboards程式码...
NULL 博文链接:https://rensanning.iteye.com/blog/1315014
TiJSPDF, Titanium Mobile 应用程序的JSPDF插件 TiJSPDFTiJSPDF是用于使用JSPDF库生成pdf并在 Titanium Mobile 应用程序中操作它们的Titanium Mobile 应用程序的一种 JSPDF插件插件。这个插件独立于 Titanium 维护,...
用Titanium Mobile的优势和劣势? 总是从Hello world开始 准备工作? 通过模板建立默认的应用 模板程序彻底研究 Hello World完成了! Titanium Studio工作环境 本章小结 第二章 入门-iOS基础概念 创新的界面 ...
Titanium使用JavaScript来开发原生iOSAndroid和Windows应用
链接到应用程序的视频演示: : 代码引用: -Google API和文档: : -读取对象并将其写入文件: : -处理程序(用于按钮): ://stackoverflow.com/questions/15874117/how-to-set-delay-in-android -取消处理程序: ...
Ti.GoogleMaps是一个开源项目,旨在支持Appcelerator的Titanium Mobile中的Google Maps iOS-SDK。 该模块当前支持以下API: 地图检视 注解 瓷砖覆盖 多边形叠加 折线叠加 圆形叠加 自动补全对话框 聚类 ...
Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...
Titanium-WebClient Titanium Web服务客户端
钛备份Titanium Backup Pro是目前为最强悍的程序和系统备份工具,需ROOT权限运行。它的程序命名就是一个暗示,钛(元素名Ti),是一种高档的金属,特点是重量轻但是强度大,相当稳固,被广泛应用于航天和航海这些...