`
rensanning
  • 浏览: 3574163 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38697
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:609435
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:685024
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:90828
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:403537
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:70082
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:92524
社区版块
存档分类
最新评论

使用Titanium Mobile开发iPhone/Android应用(07)- Twitter客户端之照相机

阅读更多
使用照相机

在前一篇我们说了一下iPhone中的几个功能,GPS和地图的表示,这篇我们将说说照相机的使用。能够从已经照好的照片中选择照片,而且选择的方式通过Option Dialog罗列,然后将照片发布到TwitPic。

ImageView的准备

要能够预览选择的照片,我们需要准备表示照片的View。这部分和前一篇中的表示地图部分是一样的。

我们在前一篇中作成的message_window.js中追加一下代码:

var imageView = Titanium.UI.createImageView(
    {
        width: 'auto',
        height: 240,
        top: 220
    }
);
imageView.hide();
win.add(imageView);


和前一篇地图的表示一样,在们有必要显示时候先通过hide方法将其隐藏。而且,注意一下width被设置为'auto'。讲width设置为'auto',在之后设置照片的数据时候,就能够维持原有图片的比例自动调整大小。

准备OptionDialog

添加图片包含照相和从已有的相册中选择照片。调用OptionDialog只有为用户提供照片添加方式的选择。



var sourceSelect = Titanium.UI.createOptionDialog({
    options:['照相', '从相册选择', '取消'],
    cancel:2,
    title:'添加照片'
});

sourceSelect.addEventListener('click',function(e)
{
    switch( e.index ) {
    case 0:
        startCamera();
        break;
    case 1:
        selectFromPhotoGallery();
        break;
    }
});

var photoButton = Ti.UI.createButton(
    {
        top: 160,
        left: 100,
        width: 80,
        height: 44,
        title: 'photo'
    }
);

photoButton.addEventListener(
    'click',
    function() {
        sourceSelect.show();
    }
);
win.add(photoButton);


在Titanium.UI.createOptionDialog传递的参数options中设置,表示的文字。然后,为做好的optionDialog对象设置click事件的监听。其中从事件对象e的e.index能够取到按下按钮的index。这里我们对「照相」「从相册选择」两个按钮分别调用获取照片的函数。

在后半部分中,作成了一个为了打开Dialog的photoButton按钮。当按下该按钮后,将Dialog显示出来:photoButton.addEventListener中调用sourceSelect.show()

取得照片

上边的代码中调用了两个函数:startCamera,selectFromPhotoGallery。
首先我们编写startCamera方法来启动照相机。

function startCamera() {
    Titanium.Media.showCamera(
        {
            success:function(event) {
                var image = event.media;
                imageView.image = image;
                imageView.show();
                uploadToTwitPic(image);
            },
            //cancel:function(){},
            error:function(error) {
                if (error.code == Titanium.Media.NO_CAMERA)
                {
                    alert('没有找到照相机!');
                }
            },
            saveToPhotoGallery:true,
            allowEditing:true,
            mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
        }
    );
}


其中Titanium.Media.showCamer是启动照相机的方法。参数中是指定照完向后的处理和照相的种类等的设置。

成功照完相后的回调函数指定到success参数中。往该函数传递的event对象的media参数就是我们照好的照片对象。将该照片对象设置到我们刚才做好的imageView当中后讲imageView表示出来。最后通过uploadToTwitPic函数讲该照片发送到TwitPic。至于uploadToTwitPic函数我们最后再说明。

照相的取消,出错处理指定到cancel, error参数中。我们没有取消的具体处理内容,所以这里代码被注释了。出错的处理中,判断了是否是没有照相机引起的错误。

在mediaTypes参数指定了Ti.Media.MEDIA_TYPE_PHOTO后,我们将只能照相不能录像。如果不指定的话。默认是可以录像的。

以下是从相册中获取照片的代码:
function selectFromPhotoGallery() {
    Ti.Media.openPhotoGallery(
        {
            success: function(event) {
                var image = event.media;
                imageView.image = image;
                imageView.show();
                uploadToTwitPic(image);
             },
            // error:  function(error) { },
            // cancel: function() { },
            allowEditing: false,
            mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
        }
    );
}

基本上和启动照相机的代码是一样的。

这样在点下photo按钮后,将表示出来Dialog,选择图片后表示在页面上。


往Twitter发送照片

上边我们已经能够取得照片,下边的事就是想办法把照片发布到Twitter上去。Twitter自身没有专门的发送图片的功能,所以只能利用图片发送服务将图片传到服务器,然后将上传的图片的URL发布到Twitter。

这里说一下刚才的uploadToTwitPic函数。通过TwitPic的OAuth Echo认证方法,利用Twitter的OAuth和TwitPic的APIkey就能够发信息。也就是说不用申请TwitPic的账户,也不用将Twitter的ID和密码登陆到TwitPic.

function uploadToTwitPic(image) {
    var xhr = Ti.Network.createHTTPClient();

    var verifyURL = 'https://api.twitter.com/1/account/verify_credentials.json';
    var params = {
        url:verifyURL,
        method: 'GET'
    };
    var header = twitterApi.oAuthAdapter.createOAuthHeader(params);

    xhr.onload = function(){
        var res = JSON.parse(this.responseText);
        textArea.value = ( textArea.value || '' ) + ' ' + res.url;
    };
    //xhr.onerror = function(){  };

    xhr.open('POST','http://api.twitpic.com/2/upload.json');
    xhr.setRequestHeader('X-Verify-Credentials-Authorization',header);
    xhr.setRequestHeader('X-Auth-Service-Provider',verifyURL);

    xhr.send(
        {
            key: 'YOUR_TWITPIC_API_KEY',
            message: textArea.value,
            media: image
        }
    );
}


twitterApi.oAuthAdapter.createOAuthHeader()方法中,生成OAuth Echo用的HTTP请求的Header。xhr.onload中指定上传完了后讲图像URL显示到文本框的回调函数。xhr.open中指定TwitPic发信用URL。之后通过xhr.setRequestHeader设定OAuth Echo认证的必须HTTPHeader。xhr.setRequestHeader在xhr.open之前调用的话也不会出错误或者警告。但是实际中要注意调用的顺序。

最后在xhr.send中,指定APIkey,media中指定要发送的图片,message中指定说明文字后,TwitPic的页面就能表示出来了。在'YOUR_TWITPIC_API_KEY'指定你自己从http://dev.twitpic.com/apps/new获取的TwitPic的APIkey。
  • 大小: 55.3 KB
  • 大小: 93.5 KB
分享到:
评论

相关推荐

    Titanium中Httpclient访问REST 服务

    Titanium是一款JavaScript开发的开源移动应用框架,它允许开发者使用JavaScript编写原生iOS和Android应用。在Titanium中,我们可以通过HTTPClient模块来发送HTTP请求,与RESTful Web服务进行通信。REST...

    sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件.zip

    sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件 这个插件不再主动地维护 ***因为我不再使用 st2/st3 。 有人对 fork 感兴趣并维护它?替代插件:...

    Titanium Mobile API

    Titanium Mobile API 是一款由 Appcelerator 公司提供的用于跨平台移动应用开发的强大工具包。该工具允许开发者使用 JavaScript 编写应用程序,并通过一套统一的 API 接口访问原生移动设备功能,如 GPS 定位、摄像头...

    TITANIUM智能手机应用开发教程

    ### TITANIUM智能手机应用开发教程知识点概览 #### 一、TITANIUM系统简介与特点 **TITANIUM系统**是一种基于云的移动应用程序开发平台,它支持跨平台开发,允许开发者使用JavaScript来编写原生移动应用程序。...

    Android-titanium_mobile.zip

    Android-titanium_mobile.zip,带有javascript的本地ios、android和windows应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    钛备份 Titanium Backup v3.8.6 捐赠版 for android -- 安卓 天涯浪子

    钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常...支持全Android平台,热忠捣鼓的机友必装之软件。

    Titanium Mobile SDK 3.1.0 Apidoc 离线版

    Titanium Mobile SDK 3.1.0 是一个用于构建原生移动应用的开发工具,尤其针对iOS和Android平台。这个版本的Apidoc是开发者的重要参考资料,它包含了完整的API文档,帮助开发者理解并使用Titanium框架的各种功能。...

    TitaniumMobile开发跨平台iOS和Android应用

    Titanium Mobile为开发者提供了一种高效的跨平台移动应用开发方式。通过使用JavaScript,开发者能够快速构建功能丰富的应用程序,并且能够在iOS和Android两个主要平台上运行。虽然存在一些局限性,但总体而言,...

    Titanium Mobile 书籍推荐

    Appcelerator Titanium 是一个流行的开源移动开发框架,它允许开发者使用 JavaScript 来构建原生的 iOS、Android 和其他平台的应用程序。对于想要深入理解和掌握 Titanium Mobile 开发的程序员来说,阅读相关的书籍...

    Titanium使用JavaScript来开发原生iOSAndroid和Windows应用

    Titanium是一个开源的移动开发框架,它允许开发者使用JavaScript语言来构建原生的iOS、Android以及Windows应用程序。这个框架的核心理念是提供一个跨平台的解决方案,让开发者可以用一种语言编写代码,然后在多个...

    [Titanium] Appcelerator Titanium 移动应用开发教程 (英文版)

    [Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...

    适用于封隔器,保护器,混淆器和奇数的Android应用程序标识符-适用于Android的PEiD-Android开发

    有关此工具的用途的更多信息,请查看:Android编译器指纹技术,使用APKiD检测盗版和恶意Android应用APKiD:适用于Android应用的PEiD安装pip install --upgrade wheel pip wheel --wheel-dir = / tmp / yara-python -...

    Mobile-UXSDK-Android:DJI Mobile UXSDK是一套与产品无关的UI对象,可使用DJI Mobile SDK快速跟踪Android应用程序的开发

    UX SDK是一套与产品无关的UI对象,可使用快速跟踪Android应用程序的开发。 另外,请查看的新开放源代码版本。 一体化 通过Maven声明依赖项: < groupId>com.dji</ groupId> < artifactId>dji-uxsdk</ ...

    jasmine-titanium:Jasmine Spec框架与Appcelerator Titanium Mobile的集成

    贾米钛 这将JavaScript BDD框架带到了Titamium Mobile。 入门 制作目录并获取Jasmine Titanium cd Resources mkdir spec lib vendor cd vendor git clone ... Titanium Mobile 1.7.2或更高

    Titanium plugin开发初探

    在移动应用开发领域,Titanium 是一个流行的选择,它允许开发者使用 JavaScript 来构建原生的 iOS 和 Android 应用。Titanium 的核心理念是通过跨平台的 JavaScript API 提供与原生功能的无缝对接,而插件开发则是这...

    titanium-paypal:with将PayPal iOS-SDK 2.x与Titanium Mobile一起使用

    Ti.PayPal是一个开源项目,旨在支持Appcelerator的Titanium Mobile中的PayPal iOS-SDK2.x。 该模块当前支持以下API: 简单付款 未来付款 商家配置 注意:这是Ti.PayPal的iOS版本。 您可能需要检查以获取Android...

    Android-Development-Tools:主要是收集了各式各样的Android开发工具、函式库、参考文件...等等的相关连结

    等等的相关连结,希望能对开发Android应用程式有帮助。如有不完善的地方,欢迎加以补充! !另外如果分类有不妥的地方,或标示部清楚的地方,也欢迎提出! !Android版本分布Android Developers - Dashboards程式码...

    Titanium开发者平台介绍

    - **无需Java或Objective-C**:传统的移动应用开发通常需要使用Java(针对Android)或Objective-C/Swift(针对iOS)。而Titanium打破了这一限制,开发者可以用自己熟悉的语言进行开发,同时保持接近原生性能的表现。...

Global site tag (gtag.js) - Google Analytics