buy online retin-a overnight without rx, and buy cheap amoxil purchased online without prescription, and buying cheap premarin with free fedex overnight, and buying cheap diflucan (fluconazole) cod saturday delivery, and buy online taking too much synthroid medication, and cheap pharmacy clomid twin, and purchase with no prescription order zovirax (acyclovir) creditcard, and order online buy generic wellbutrin cheap no membership, and cheap online will generic available valtrex in toronto, and cheap pharmacy order cheap order propecia online, and order online no prescription hydrochlorothiazide online pharmacy, and pharmacy cheapest accutane ultrum, and pharmacy cheapest cheap doxycycline without rx, and ordering online where to buy norvasc, and buy cheapest prozac for sale cod, and buy online where can i buy flagyl online, and buying cheap acyclovir xr purchase online cheap, and purchase with no prescription forum paxil, and ordering online best buy lipitor, and buy cheapest arimidex buy without a prescription, and pharmacy cheapest bactrim overnight delivery cheap, and generic medications buy neurontin online no membership, and order cheap baclofen side effects, and order online price zithromax, and pharmacy cheapest where to buy lasix without a prescription, and

存档

文章标签 ‘Android’

在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 标签: ,

【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 多页的内容。

山寨 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 标签: ,

InfoQ 架构师 (8月刊)

2009年8月14日 没有评论

InfoQ中文站的电子杂志《架构师》(8月刊) 主编由Ruby社区的首席编辑李明担任,此外,本期《架构师》还增加了一个名为“架构师大家谈”版块。

人物专访

  • Simon探讨编程语言与研究工作

热点新闻

  • 开发减速,是为了赢利提速
  • Sun股东同意Oracle的收购
  • 综述:Scala是Java未来的后继者
  • “服务重用”是否被过度使用?
  • 使用LESS或Sass重构CSS代码
  • Ruby on Rails项目的救赎
  • 各方未就HTML 5 Video Codec达成一致
  • 微软向Linux Kernel贡献两万行代码
  • Google开发全新操作系统Google Chrome OS,直接挑战微软核心业务
  • 微软的浏览器操作系统:Gazelle
  • 4 个Office应用将会推出在线版:Word、Excel、PowerPoint和OneNote
  • 中国人寿构建国内首个Silverlight企业级应用

推荐文章

  • J2EE应用下基于AOP的抓取策略实现
  • RGen:Ruby建模和代码生成的框架
  • 面向服务的经济学
  • 云计算的虚拟研讨会
  • backlog是一种关键的产物和实践,还是一种浪费?
  • 反对if行动/反对for行动

新品推荐

  • JUnit 4.7的新特性:Rule
  • Rails 2.3.3发布、Rails 3.0与Merb现状
  • Oracle和BEA完成产品集成,融合中间件 11g发布
  • FlexMonkey 1.0发布了
  • Android开始支持脚本语言Python、Lua及Beanshell,未来还将支持Ruby
  • Oracle Coherence 3.5带来增强的WebLogic支持和万亿级数据网格
  • 微软发布了分布式计算技术Dryad和DryadLINQ的学术版
  • PowerShell 2.0 RTM即将发布

架构师大家谈:架构师修炼之道

下载本月刊

Google Android: Google 移动新战略

2007年11月18日 没有评论

由 Google 牵头,携手国际上多家领先的移动服务提供商(包括中国移动通信、日本的DoCoMo) 共同组建开放手机联盟, 并推出 Android 综合移动设备平台。这是一个基于 Linux 的移动应用创新平台。同时也推出 Android SDK 软件开发工具包,开发者们可以利用 SDK 工具包开发基于 Android 平台的新应用。Google也正式宣布举办总奖金为 1000 万美元的 Android 开发者大赛,邀请开发者们为 Android 平台开发移动应用。

Google 已将战线延伸至无线移动终端,可以预见这将是 Google 广告收入新的增长点。

有关 Google Android 架构介绍的视频信息:

分类: Google 标签: ,