当前位置:  编程技术>移动开发
本页文章导读:
    ▪二维码打雷登录流程详解,附demo(2/2)        二维码闪电登录流程详解,附demo(2/2)   上篇文章,我们重点介绍了一下二维码登录的流程,以及每个“角色”要做的事情,下面我们重点分析TV角色所做的工作。    TV主要完成二维码图.........
    ▪ UIApplicationsharedApplication的惯用使用方法        UIApplicationsharedApplication的常用使用方法下面是这个类的一些功能: 1.设置icon上的数字图标     //设置主界面icon上的数字图标,在2.0中引进, 缺省为0     [UIApplicationsharedApplication].application.........
    ▪ unity3d 将摄像头视线保存到图片       unity3d 将摄像头视野保存到图片 简单的小例子,不做过多说明了: //把摄像头视野 打印出png图片 private Rect CutRect = new Rect(0, 0, 1, 1); private Image MakeCameraImg(Camera mCam,int width,int height) { .........

[1]二维码打雷登录流程详解,附demo(2/2)
    来源: 互联网  发布时间: 2014-02-18
二维码闪电登录流程详解,附demo(2/2)
   上篇文章,我们重点介绍了一下二维码登录的流程,以及每个“角色”要做的事情,下面我们重点分析TV角色所做的工作。

   TV主要完成二维码图片显示,以及websocket请求。下面重点说一下这两点。

1. Base64转码Bitmap

  服务端返回二维码图片的二进制数据,我们需要将其转成图片。这个问题不大,

  android系统原生支持Base64转码的,并且提供了丰富的API。使用方式如下:

 byte[]  = null;
 // 将得到的String字符串通过Base64转为字节数组
c = Base64.decode(qrCode.img_base64, Base64.DEFAULT);
// 根据byte数组创建Bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(c, 0,
c.length);
ivCodeImage.setImageBitmap(bitmap);

2. websocket支持
   Wedsocket是HTML 5一种新的 协议,它是实现了浏览器和服务器全双工通信,可以自行百度。

    由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。

这种传统的HTTP request 的模式带来很明显的缺点:  浏览器需要不断的向服务器发出请求(request),

然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

    在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。

两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:

1. Header

    互相沟通的Header是很小的-大概只有 2 Bytes

2. Server Push

     服务器可以主动传送数据给客户端


    在android上,实现Websocket是开源项目非常多,autobahn, JWebsocket等,这里我使用的是精简过的autobahn类库,

因为autobahn除了实现Websocket协议外,还实现了Websocket Application Messageing 协议(Websocket子协议)。

这里我们只要用Websocket实现就可以了。

  使用代码如下:

private void excuteWebcoketTask() {
  System.out.println("开始连接websocket///");

final WebSocketConnection wsc = new WebSocketConnection();
try {

  // 测试拍照登录的地址
  wsc.connect(
  "ws://test.api.3g.youku.com/thirdpart/session/pull?pid=e80933b38c5c019d&ver=1.7.0",
  new WebSocketConnectionHandler() {

@Override
public void onBinaryMessage(byte[] payload) {
  Logger.e(TAG, "onBinaryMessage size="
  + payload.length);
}

@Override
public void onClose(int code, String reason) {
   Logger.e(TAG, "onClose reason=" + reason);
}

@Override
public void onOpen() {
  Logger.e(TAG, "onOpen");
  // wsc.sendTextMessage("Hello!");
  wsc.sendTextMessage("9c553730ef5b6c8c542bfd31b5e25b69");
  // wsc.disconnect();
}

@Override
public void onRawTextMessage(byte[] payload) {
  Logger.e(TAG, "onRawTextMessage size="
  + payload.length);
}

@Override
public void onTextMessage(String payload) {
  Logger.e(TAG, "onTextMessage" + payload);
  Toast.makeText(QRCodeLoginActivity.this, payload, Toast.LENGTH_SHORT).show();
}
});

} catch (WebSocketException e) {
 // TODO Auto-generated catch block
  e.printStackTrace();
}
}

    


  Websocket实现参见demo:点我下载

最终效果(demo无卖相,勿喷)            

     


     

   原文链接:http://www.67tgb.com/?p=622

   转载注明:望月听涛

2楼lfmilaoshi3天前 21:44这都是非常实用的技术,分享给大家,给人类的贡献。Re: wangyuetingtao昨天 14:42回复lfmilaoshin谢谢老师鼓励,汗颜了 ,呵呵 - -!1楼a1314517love6天前 11:26闪电登录,需要网给力是吧兵哥Re: wangyuetingtao6天前 14:25回复a1314517loven闪电是说面前输入用户名和密码,一拍即可登录。网络只要通即可,呵呵

    
[2] UIApplicationsharedApplication的惯用使用方法
    来源: 互联网  发布时间: 2014-02-18
UIApplicationsharedApplication的常用使用方法

下面是这个类的一些功能:
1.设置icon上的数字图标

    //设置主界面icon上的数字图标,在2.0中引进, 缺省为0

    [UIApplicationsharedApplication].applicationIconBadgeNumber = 4;
2.设置摇动手势的时候,是否支持redo,undo操作

    //摇动手势,是否支持redo undo操作。

   //3.0以后引进,缺省YES


    [UIApplicationsharedApplication].applicationSupportsShakeToEdit =YES;


3.判断程序运行状态

    //判断程序运行状态,在2.0以后引入

    /*

     UIApplicationStateActive,

     UIApplicationStateInactive,

     UIApplicationStateBackground

     */

   if([UIApplicationsharedApplication].applicationState ==UIApplicationStateInactive){

        NSLog(@"程序在运行状态");

    }
4.阻止屏幕变暗进入休眠状态

    //阻止屏幕变暗,慎重使用,缺省为no 2.0

    [UIApplicationsharedApplication].idleTimerDisabled =YES;

(慎重使用本功能,因为非常耗电)
5.显示联网状态

    //显示联网标记 2.0
    [UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;


6.在map上显示一个地址

   NSString* addressText =@"1 Infinite Loop, Cupertino, CA 95014";

   // URL encode the spaces

    addressText =  [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

   NSString* urlText = [NSStringstringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];

    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlText]];


7.发送电子邮件

   NSString *recipients =@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=Hello from California!";

   NSString *body =@"&body=It is raining in sunny California!";

    NSString *email = [NSStringstringWithFormat:@"%@%@", recipients, body];

    email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:email]];
8.打电话到一个号码

    // Call Google 411
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://8004664411"]];


9.发送短信

    // Text to Google SMS
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sms://466453"]];


10.打开一个网址

   // Lanuch any iPhone developers fav site
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]];


    
[3] unity3d 将摄像头视线保存到图片
    来源: 互联网  发布时间: 2014-02-18
unity3d 将摄像头视野保存到图片

 简单的小例子,不做过多说明了:

  //把摄像头视野 打印出png图片
    private Rect CutRect = new Rect(0, 0, 1, 1);
    private  Image MakeCameraImg(Camera mCam,int width,int height) 
    {
        Image mImage;
        RenderTexture rt = new RenderTexture(width, height, 2);
        mCam.pixelRect = new Rect(0, 0, Screen.width, Screen.height);
        mCam.targetTexture = rt;
        Texture2D screenShot = new Texture2D((int)(width * CutRect.width), (int)(height * CutRect.height),
                                                 TextureFormat.RGB24, false);
        mCam.Render();
        RenderTexture.active = rt;
        screenShot.ReadPixels(new Rect(width * CutRect.x, width * CutRect.y, width * CutRect.width, height * CutRect.height), 0, 0);
        mCam.targetTexture = null;
        RenderTexture.active = null;
        UnityEngine.Object.Destroy(rt);
        byte[] bytes = screenShot.EncodeToPNG();
        //string filename = Application.dataPath + "/Imgs/Img"
          //                  + System.DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".png";
        //System.IO.File.WriteAllBytes(filename, bytes);

        mImage = Image.GetInstance(bytes);
        return mImage;

    }



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3