存档

‘Mobile & Embedded’ 分类的存档

在Android应用中调用RESTful服务

2012年5月14日 没有评论

REST是一个被广泛采用的架构模式,尤其在API、Web Services、云计算流行的大环境下,所有主流的互联网厂商都提供了其服务的REST接口,用户可采用JSON、XML格式使用HTTP进行方法调用和数据传输。

RESTful已成为主流客户-服务器编程模式,在手机端与后端系统的交互中也被普遍采用。

现在我们就来分析下Android环境下的RESTful编程模式和一般方法。

错误的实现方式

这个做法会导致:

  • 操作系统shutdown这个进程;
  • 数据不能持久化保存。

而正确处理REST方法通常有三种设计模式:

  • 使用 Service API
  • 使用 ContentProvider API
  • 使用 ContentProvider API 和 SyncAdapter

其中,Service Helper的作用是:

以单体(Singleton)的方式暴露一个简单的异步API给用户接口使用。

• 准备和发送服务请求

– 检测方法是否已经被挂起

– 创建请求意图

– 添加操作类型和一个唯一的请求id号

– 添加方法的特殊属性值

– 添加binder回调

– 调用startService(意图)

– 返回请求id号

• 处理从服务返回的回调

– 将回调分发给用户接口监听器

实战一下:

An attempt at implementing a RESTful Android application 开始RESTful Android应用的尝试

git clone https://github.com/jeremyhaberman/restful-android.git

在 eclipse > file > import >  Existing Projects into Workspace

Debug As Android Application,这里使用了Simple OAuth library for Java第三方库

如通过Twitter API使用OAuth验证

import com.jeremyhaberman.restfulandroid.rest.Request;

// RESTful Android Twitter app settings

private static final String TWITTER_API_KEY = “ssdfiwKoedslVjUsngtow”;

private static final String TWITTER_API_SECRET = “sdfsIkkmIKLFDvzaLdnBeLAVkwPFUxxZ9Ulf8fkY”;

private static final String TWITTER_CALLBACK_URL = “restful-android://callback”;

总结:

  • 不要在Activities里实现REST方法;
  • 从一个服务中启动长时间运行的操作;
  • 持久要早、要经常(Persist early & persist often)
  • 最大限度的减少网络使用(Minimize the network usage);
  • 是不是在关键时刻使用同步适配器执行后台操作(Use a sync adapter to execute background operations which are not time critical),使用Android Cloud to Device Messaging。

参考:


分类: Java, Mobile & Embedded 标签: ,

试用ArcGIS Runtime SDK for iOS

2012年5月9日 没有评论

首先下载 ArcGIS Runtime SDK for iOS ,需注册ArcGIS账号。

安装后的路径信息:

The ArcGIS Runtime SDK for iOS has successfully installed content into the following folders located in your profile (~/Library):

~/Library/SDKs/ArcGIS/ArcGIS.framework

~/Library/SDKs/ArcGIS/Samples

~/Library/Developer/Shared/Documentation/DocSets

~/Library/Application Support/AGSiOSSDK/

To uninstall the API and remove all content from your computer run uninstallAGSiOSSDK at:

~/Library/Application Support/AGSiOSSDK

打开Xcode,你会发现已有ArcGIS项目的向导。

或下载ArcGIS for iOS Developer Samples直接调试已有的iOS例子,加速你对这块知识的学习。

这是GPS功能演示,它能显示设备在地图上的位置。


分类: Mobile & Embedded 标签: ,

【Android】制作appwidget桌面相册幻灯片

2012年5月2日 没有评论

最近在学习android的appwidget,看了一些文章,决定做一个相册幻灯片来练手,下面写写过程来给大家共享:

  1. 在项目的res/xml/下建立一个appwidget_info.xml文件,内容如下:
    <?xml version=”1.0″ encoding=”utf-8″?>
    <appwidget-provider xmlns:android=”http://schemas.android.com/apk/res/android”
    android:initialLayout
    =”@layout/appwidget”
    android:minHeight
    =”800dp”
    android:minWidth
    =”240dp”
    android:updatePeriodMillis
    =”300000″ >

    </appwidget-provider>

    在这里定义appwidget的基本信息,宽度,高度,以及刷新的频率等

  2. 在layout/下建立appwidget的layout文件
    <?xml version=”1.0″ encoding=”utf-8″?>
    <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    android:layout_width
    =”match_parent”
    android:layout_height
    =”match_parent”
    android:gravity
    =”center”
    android:orientation
    =”vertical”
    android:padding
    =”20dp” >

    <Button
    android:id=”@+id/button1″
    android:layout_width
    =”120dp”
    android:layout_height
    =”wrap_content”
    android:layout_gravity
    =”center_horizontal”
    android:text
    =”播放图片” />

    <ImageView
    android:id=”@+id/imageView1″
    android:layout_width
    =”fill_parent”
    android:layout_height
    =”fill_parent”
    android:background
    =”#FFFF”
    android:padding
    =”2dp”
    android:scaleType
    =”fitXY”
    android:src
    =”@drawable/p1″ />

    </LinearLayout>

    这个layout比较简单,里面仅仅包含一个button和一个imageview,设置 android:padding=”2dp”来让图片有一个简单的边框样式

  3. 建立MyAppWidgetProvider继承AppWidgetProvider,重写父类的生命周期函数,这里的原理google一下有很多,就不多写了。首先重写onUpdate,这个方法在appwidget第一次加载时会被调用,在这里我们主要使用ContentResolver查询出本机所有图片;接下来新建一个PendingIntent将图片路径的集合封装到其中,最后将pendingIntent设置给button
    Intent intent = new Intent(“com.jaredluo.appwidget.change”);
    intent.putExtra(
    “path”, pathStrArr);for (int j = 0; j < appWidgetIds.length; j++由于appwidget与主程序处于不同的进程中,所以通讯都需要依靠PendingIntent。

    ) {
    //RemoteView是appwidget中很重要的一个类,基本上对appwidget中
    //所有控件的操作都要基于RemoteView来操作

    RemoteViews remoteView
    = new RemoteViews(context.getPackageName(),
    R.layout.appwidget);
    remoteView.setOnClickPendingIntent(R.id.button1, pIntent);
    appWidgetManager.updateAppWidget(appWidgetIds[j], remoteView);
    remoteView
    = null;
    }

    //设置pending,发送广播,注意设置
    //PendingIntent.FLAG_UPDATE_CURRENT
    //否则onRecieve函数中接收不到intent中的数据
    PendingIntent pIntent = PendingIntent.getBroadcast(context, 0

    , intent,PendingIntent.FLAG_UPDATE_CURRENT);
  4. 接下来在onReceive中接收我们刚才设置给button的广播,首先新开一个线程控制图片的播放,接下来在Handler中为ImageView设置图片源
    final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidget);
    String path
    = paths[msg.getData().getInt(“i”)];
    remoteViews.setImageViewBitmap(R.id.imageView1,BitmapUtil.getBitmap(path,
    200, 200));
    appWidgetManager.updateAppWidget(componentName,remoteViews);

    这里需要注意一个问题,我在把图片设置给appwidget时,跑不了几张图片就会出现!!! FAILED BINDER TRANSACTION !!!这个错误,最先以为是图片太大造成的,结果压缩图片也无果;后面在网上搜索一番发现:Binder data size limit is 512K 由于传输图片到appwidget进程中的Binder最大数据量是512k,并且RemoteView也不会每次清理,所以如果每次都使用同一个RemoteView进行传输会因为溢出而报错。最后每次都新建一个RemoteView问题才解决掉。

看看最后的效果,点击播放图片按钮,图片就开始更替:

代码还有很多问题和不完善,接下来有空会继续修改。


分类: Java, Mobile & Embedded 标签:

Best Android Apps

2011年5月29日 4 条评论

一份整理非常全面的 Android 最佳应用幻灯片,有超过 200 多页的内容。


看各大厂商如何支持MeeGo

2010年6月15日 没有评论

MeeGo项目结合英特尔的Moblin和诺基亚的Maemo, 为下一代计算设备打造了一个基于Linux的开源软件平台。MeeGo软件平台为开发人员的应用程序提供了最大范围的设备选择,包括上网本和入门级桌面设备,便携式计算和通讯设备,车载信息娱乐设备,联网电视,媒体电话等等-均使用共同的开发框架Qt。MeeGo将帮助消费者从不同的设备中获得创新的应用程序体验。 MeeGo项目由Linux基金会管理。如需了解有关MeeGo的更多信息,请登陆www.meego.com。 MeeGo为Linux基金会商标。

Acer

“Acer曾积极支持Moblin,我们现在很高兴Moblin发展成了MeeGo软件品台,” Acer高级副总裁和IT产品全球运营部的总裁Jim Wong称,“我们期待开放的MeeGo带来生态系统创新。”

Amino

“Amino很高兴宣布支持使用MeeGo软件品台,”Amino的CEO Andrew Burke说,“我们相信MeeGo会促进消费者电子和PC行业内创新型产品的发展。”

Asianux

“我们很开心加入MeeGo项目,” Asianux的CEO Liguang Yang称,“我们期待利用MeeGo向我们的客户提供强大的移动体验。”

Asus Corp.

“MeeGo是令人激动的全新软件平台,为客户提供了基于Intel® Atom™处理器的移动计算解决方案,从而为我们的用户提供创新技术,” Asus Corp.的副总裁和笔记本业务部总经理S.Y. Shian称,“随着上网本市场的发展,Asus将继续提供优化计算体验的产品和服务,以满足现在上网本客户的特别需求。”

宝马集团

“开源创新对汽车行业向下一代信息娱乐系统的转换来说非常必要,可以帮助缩短消费者电子和车载信息娱乐解决方案的差距,”

宝马集团信息娱乐和通信系统部门总经理、GENIVI 发言人Graham Smethurst称,“第一代GENIVI平台是基于Moblin构建的,其向MeeGo的转换,以及对多类构架的支持会增加它对行业的吸引力。”

Cisco

“MeeGo代表了移动计算的令人激动的发展,因为它提供了全新的开源平台。这个平台将降低开发的复杂性,为不同类型的下一代移动设备提供合作,网络会议和安全应用程序,”

来自Cisco无线,安全和路由技术的Brett Galloway称,“Cisco与诺基亚和英特尔合作密切,我们期待与他们和MeeGo社区合作,挖掘更多的机会为我们的客户和企业改善移动体验。”

Collabora, Ltd.

“MeeGo项目对应用程序开发人员来说是非常重大的消息,” Collabora Ltd的董事和创立人Robert McQueen称,“Moblin 和 Maemo的合力使得应用程序的开发更为轻松,可以帮助开发人员为更大范围内的移动和消费者计算设备提供应用程序服务。”

CS2C

“CS2C在中国的IT下乡活动中看到基于Moblin的产品,上网本和入门级桌面产品,获得了巨大的成功,” CS2C的CEO和总裁Han Naiping称,“CS2C非常高兴成为MeeGo项目的一部分。”

DeviceVM

“DeviceVM非常激动地宣布,支持使用MeeGo软件平台,” DeviceVM的CEO和创立人Mark Lee称,“MeeGo将促进在消费者电子和PC行业创新型产品的发展。”

EA Mobile

“作为世界排名第一的移动游戏商,EA Mobile对MeeGo的发布,及它将怎样帮助我们更为有效更为经济地向我们的消费者推出精彩游戏的方式非常激动。” EA Mobile全球运营副总裁Farshid Almassizadeh称。

Gameloft

“Gameloft一直期待有一个平台,能把消费者的游戏体验提升到新的高度。有了这么多的支持者,我们期待MeeGo会为Gameloft提供必要的平台,帮助我们设计出超出消费者预想的游戏产品,” Gameloft董事长兼CEO Michel Guillemot称。

Hancom

“Hancom对MeeGo的潜力感到很激动。Hancom期望能使用韩语版的MeeGo 1.0,开发产品,并且与本地的ISV合作为韩国市场开发具有吸引力的解决方案,” Hancom CEO Youngick Kim称。

Linpus

“Linpus很高兴参与MeeGo项目,” Linpus销售副总裁Rita Jing称,“我们很早就参与了Moblin™项目,与世界上最大的几家OEM商合作。Moblin和Maemo项目的结合物MeeGo打造了一个更为有力和灵活的开源社区和平台。”

Maemo社区委员会

“MeeGo是一个革命性的开源项目,为新老开发人员提供了令人激动的机会,” Maemo社区委员会主席Andrew Flegg称,“MeeGo是Maemo的自然延展。Maemo社区,自2005年诺基亚推出770互联网掌上电脑(Nokia 770 Internet)以来,就一直在分享MeeGo不断改进的工具,更大范围的设备应用和大量的创新型理念带来的优势,”

Mandriva

“Mandriva很高兴参与到MeeGo项目中来,” Mandriva的CEO Arnaud Laprévote称,“MeeGo项目降低了我们的软件基础设施成本,让Mandriva能够把资源集中在为客户构件价值上。”

Metasys

“自Classmate PC项目开始,Metasys和英特尔就一直在合作为几个国家的Linux环境开发教育解决方案。现在,Metasys成为了MeeGo项目的一部分,并且正在调整其为Classmate PC开发的教育平台的战略,之前这个平台是基于Moblin的。因此,公司期待为下一代计算设备提供创新型开放软件操作系统。” Metasys的CEO Paulo Neuenschwander Maciel称。

Miracle

“Miracle很高兴能加入MeeGo项目,成为Asianux Consortium的一员。我们希望能对MeeGo在日本市场的加速发展做出贡献,” Miracle总裁兼CEO Takashi Kodama称,“MeeGo将帮助我们在内嵌空间提供更为令人兴奋的创新型产品。”

MontaVista软件

“我们很高兴加入到MeeGo社区。MeeGo将协助设备制造商向市场快速推出商业化设备,并有效利用成本,” MontaVista软件营销和商业发展副总裁Dan Cauchy称,“利用MeeGo这一平台,设备制造商就能够为手机和其它消费者嵌入设备提供创新型解决方案。”

Novell

“我们与英特尔和Linux基金会建立了战略性合作关系,根据客户和开发人员的需求打造了创新型SUSE平台。” Novell

Client Preloads总监Guy Lunardi称,“有了MeeGo,Novell将继续发挥其领导作用,全力支持开放式标准,并为桌面设备卡开发平台。”

PixArt

“有了MeeGo的强大动力,我们PixArt就可以进入汽车领域,” PixArt的CEO兼总裁Gabriel Marcelo Ortiz称,“我们加入MeeGo,并将成为MeeGo社区的一部分。”

Red Flag

“Red Flag很高兴成为MeeGo项目的一部分,” Red Flag总裁兼CEO Dong Jia,“Red Flag支持基于MeeGo的产品,如上网本,便携式产品和车载信息娱乐设备,并期待MeeGo 1.0版本。”

ST-Ericsson

“作为开源Linux的强有力支持者,我们欢迎MeeGo,” ST-Ericsson副总裁和3G多媒体平台主管Teppo Hemia称,“ST-Ericsson会努力为开发人员社区提供最好的参考设计,并且致力于开发大范围的创新型移动设备。”

Tencent

“作为中国领先的服务提供商,有10亿多注册用户。腾讯相信MeeGo是我们的跨平台服务最有希望的平台之一。在基于MeeGo的设备发布后,腾讯将提供流行的产品,以与MeeGo兼容的方式扩展我们的产品和服务。在MeeGo平台上进行开发,我们就可以跨越多种设备建立共同的软件框架,包括智能手机,tablet和上网本。它将极大简化登陆移动和个性化互联网的方式,并且促进全新和现有应用程序和服务的发展。” Tencent联合技术总监和执行副总裁Jeff Xiong称。

TurboLinux

“MeeGo保留了我们定制化,服务和支持的商业模式,” TurboLinux总经理Claude Zhou称,“TurboLinux将从Moblin转换到MeeGo.平台。”

VietSoftware

“不同的计算设备占据了消费者的心。例如,智能手机在新兴市场如越南,正成为主导个人设备。” VietSoftware Inc.总监Dr. Son称,“作为Asianux Consortium的成员,VietSoftware很期望能加入英特尔和诺基亚的MeeGo项目。我们期待能对这个重大的项目做出有意义的贡献。”

Wind River

“Wind River作为经验丰富的开源和移动平台领导者之一,我们期待MeeGo能够为创新信计算设备提供灵活的软件平台,在多类设备市场提供具有吸引力的用户体验,” Wind River产品管理高级总监Chris Buerger称。

WTEC

“MeeGo项目是移动行业的一个重要开发内容,” WTEC Co., Ltd的管理总监Phiroon Phihakendr称,“我们希望参与MeeGo项目。”

Xandros

“将强大的元素融入到Linux基金会主持的MeeGo项目,将促进移动计算的发展,” Xandros的CEO Andreas Typaldos称,“对我们来说,这就意味着我们的触摸式PIM可以快速导入各种移动设备中。自2001年成立以来,我们就是Qt商店,并从一开始就参与了该项目,是Moblin的参与者。因此,MeeGo结合并拓展了我们两个世界的优势。”

###

商标:The Linux Foundation和Linux Standard Base 是Linux基金会的商标。Linux是Linus Torvalds的商标。MeeGo是Linux Foundation的商标。Moblin是英特尔的商标。

中文转自: http://www.ieing.cn/view-58331-1.html

原文链接: http://www.linuxfoundation.org/node/6144


分类: GNU/Linux, Mobile & Embedded 标签:

山寨 Android 出现深圳

2009年8月18日 没有评论

来自瘾科技中国版的独家线报, 山寨Android终于在深圳问世了, 深圳速度再一次得以体现, 让我想到了疯狂的华强北。

产品参数:

  • 处理器SAMSUNG S3C2448 400MHz
  • ROM和RAM都是128MB
  • 支持TF卡扩展
  • 200万的CMOS摄像头,最高可拍摄1600×1200的静态照片
  • 2.8寸的240×320触摸屏,6万5千色
  • 1200mAh电池
  • 首批是G网机型

产品现在已经开始量产, 不过首批是外销到其它国家.

这款机子价格还未知, 不过可以肯定应该会在2000RMB以下.

更多信息请访问: 瘾科技中国版


分类: Mobile & Embedded 标签: ,