- 浏览: 537325 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
主类:
Base64Coder.java
配置文件:
package com.mzh.www; import java.io.ByteArrayOutputStream; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; /** * @Title: CameraTestActivity.java * @Package com.lvguo.www * @Description: 相机测试 * @author MZH * @version V2.2 老样子,写个自己喜欢的版本号,方便日后维护 */ public class CameraTestActivity extends Activity { private Button btn ; private static final String IMAGE_UNSPECIFIED = "image/*"; String kkk = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button)findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //第一次看见这个类,不认识,直接Android Developer里面Search //小x英文不是很好,时刻在电脑上挂着词典,也希望朋友们能准备一款自己喜爱的词典 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //参数可直接在官方文档里面查到,所以朋友们练下手吧,自己查下EXTRA_OUTPUT intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri .fromFile(new File(Environment .getExternalStorageDirectory(), "mzh.jpg")));//temp为保存照片的文件名 //此处讲几句,类似这些方法,小x建议直接在浏览器下查,因为文档查不到就说没查到, //有网情况下,会自动定位到Activity | Android Developers直接点就OK了 startActivityForResult(intent, 1); //这是个好东西哦 Toast.makeText(getApplicationContext(), "点击拍照", Toast.LENGTH_LONG).show(); } }); } /** * 用来处理startActivityForResult返回的数据,查此方法用老办法 :直接在浏览器下查 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 9) { //此处的数字自己定,可随便 Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); //英语不好的朋友,拿工具查compress是什么意思就明白了,小x英语一般,所以此处多说一句,工具 photo.compress(Bitmap.CompressFormat.JPEG, 60, stream); byte[] b = stream.toByteArray(); //Base64Coder是一个剪切压缩辅助类,里面的东西我也看不懂,不过没事,直接用,因为要用的方法不多,情况具体定 kkk = new String(Base64Coder.encodeLines(b)); } } if(requestCode == 1){ File picture = new File(Environment.getExternalStorageDirectory() + "/mzh.jpg"); cutPic(Uri.fromFile(picture)); } super.onActivityResult(requestCode, resultCode, data); } public void cutPic(Uri uri) { //下面这一句第一眼看到我不懂,没事,直接Android Developer里面Search Intent //熟悉下面Summary吗?用工具查什么意思,再找下它是什么地方的,是官方文档最右侧顶端 的东西,里面有个Ctros,点进去 //Summary: Nested Classes | Constants | Inherited Constants | Fields //| Ctors | Methods | Inherited Methods | [Expand All] //会发现有个构造方法:Intent(String action)。。。。再点进去,贴官方代码: /** * public Intent (String action) Since: API Level 1 Create an intent with a given action. All other fields (data, type, class) are null. Note that the action must be in a namespace because Intents are used globally in the system -- for example the system VIEW action is android.intent.action.VIEW; an application's custom action would be something like com.google.app.myapp.CUSTOM_ACTION. Parameters <看到这句了吧?ACTION_VIEW,不知道的可以再Search> action The Intent action, such as ACTION_VIEW. 要再不明白的朋友可以直接在有网情况下直接把com.android.camera.action.CROP Search一下就OK了, 小x查询文档的能力不强,所以在查询这块多说几句 */ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, IMAGE_UNSPECIFIED); intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, 9); } }
Base64Coder.java
package com.mzh.www; //Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland //www.source-code.biz, www.inventec.ch/chdh // //This module is multi-licensed and may be used under the terms //of any of the following licenses: // //EPL, Eclipse Public License, V1.0 or later, http://www.eclipse.org/legal //LGPL, GNU Lesser General Public License, V2.1 or later, http://www.gnu.org/licenses/lgpl.html //GPL, GNU General Public License, V2 or later, http://www.gnu.org/licenses/gpl.html //AL, Apache License, V2.0 or later, http://www.apache.org/licenses //BSD, BSD License, http://www.opensource.org/licenses/bsd-license.php // //Please contact the author if you need another license. //This module is provided "as is", without warranties of any kind. /** * A Base64 encoder/decoder. * * <p> * This class is used to encode and decode data in Base64 format as described in RFC 1521. * * <p> * Project home page: <a href="http://www.source-code.biz/base64coder/java/">www.source-code.biz/base64coder/java</a><br> * Author: Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland<br> * Multi-licensed: EPL / LGPL / GPL / AL / BSD. */ public class Base64Coder { //The line separator string of the operating system. private static final String systemLineSeparator = System.getProperty("line.separator"); //Mapping table from 6-bit nibbles to Base64 characters. private static char[] map1 = new char[64]; static { int i=0; for (char c='A'; c<='Z'; c++) map1[i++] = c; for (char c='a'; c<='z'; c++) map1[i++] = c; for (char c='0'; c<='9'; c++) map1[i++] = c; map1[i++] = '+'; map1[i++] = '/'; } //Mapping table from Base64 characters to 6-bit nibbles. private static byte[] map2 = new byte[128]; static { for (int i=0; i<map2.length; i++) map2[i] = -1; for (int i=0; i<64; i++) map2[map1[i]] = (byte)i; } /** * Encodes a string into Base64 format. * No blanks or line breaks are inserted. * @param s A String to be encoded. * @return A String containing the Base64 encoded data. */ public static String encodeString (String s) { return new String(encode(s.getBytes())); } /** * Encodes a byte array into Base 64 format and breaks the output into lines of 76 characters. * This method is compatible with <code>sun.misc.BASE64Encoder.encodeBuffer(byte[])</code>. * @param in An array containing the data bytes to be encoded. * @return A String containing the Base64 encoded data, broken into lines. */ public static String encodeLines (byte[] in) { return encodeLines(in, 0, in.length, 76, systemLineSeparator); } /** * Encodes a byte array into Base 64 format and breaks the output into lines. * @param in An array containing the data bytes to be encoded. * @param iOff Offset of the first byte in <code>in</code> to be processed. * @param iLen Number of bytes to be processed in <code>in</code>, starting at <code>iOff</code>. * @param lineLen Line length for the output data. Should be a multiple of 4. * @param lineSeparator The line separator to be used to separate the output lines. * @return A String containing the Base64 encoded data, broken into lines. */ public static String encodeLines (byte[] in, int iOff, int iLen, int lineLen, String lineSeparator) { int blockLen = (lineLen*3) / 4; if (blockLen <= 0) throw new IllegalArgumentException(); int lines = (iLen+blockLen-1) / blockLen; int bufLen = ((iLen+2)/3)*4 + lines*lineSeparator.length(); StringBuilder buf = new StringBuilder(bufLen); int ip = 0; while (ip < iLen) { int l = Math.min(iLen-ip, blockLen); buf.append (encode(in, iOff+ip, l)); buf.append (lineSeparator); ip += l; } return buf.toString(); } /** * Encodes a byte array into Base64 format. * No blanks or line breaks are inserted in the output. * @param in An array containing the data bytes to be encoded. * @return A character array containing the Base64 encoded data. */ public static char[] encode (byte[] in) { return encode(in, 0, in.length); } /** * Encodes a byte array into Base64 format. * No blanks or line breaks are inserted in the output. * @param in An array containing the data bytes to be encoded. * @param iLen Number of bytes to process in <code>in</code>. * @return A character array containing the Base64 encoded data. */ public static char[] encode (byte[] in, int iLen) { return encode(in, 0, iLen); } /** * Encodes a byte array into Base64 format. * No blanks or line breaks are inserted in the output. * @param in An array containing the data bytes to be encoded. * @param iOff Offset of the first byte in <code>in</code> to be processed. * @param iLen Number of bytes to process in <code>in</code>, starting at <code>iOff</code>. * @return A character array containing the Base64 encoded data. */ public static char[] encode (byte[] in, int iOff, int iLen) { int oDataLen = (iLen*4+2)/3; // output length without padding int oLen = ((iLen+2)/3)*4; // output length including padding char[] out = new char[oLen]; int ip = iOff; int iEnd = iOff + iLen; int op = 0; while (ip < iEnd) { int i0 = in[ip++] & 0xff; int i1 = ip < iEnd ? in[ip++] & 0xff : 0; int i2 = ip < iEnd ? in[ip++] & 0xff : 0; int o0 = i0 >>> 2; int o1 = ((i0 & 3) << 4) | (i1 >>> 4); int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6); int o3 = i2 & 0x3F; out[op++] = map1[o0]; out[op++] = map1[o1]; out[op] = op < oDataLen ? map1[o2] : '='; op++; out[op] = op < oDataLen ? map1[o3] : '='; op++; } return out; } /** * Decodes a string from Base64 format. * No blanks or line breaks are allowed within the Base64 encoded input data. * @param s A Base64 String to be decoded. * @return A String containing the decoded data. * @throws IllegalArgumentException If the input is not valid Base64 encoded data. */ public static String decodeString (String s) { return new String(decode(s)); } /** * Decodes a byte array from Base64 format and ignores line separators, tabs and blanks. * CR, LF, Tab and Space characters are ignored in the input data. * This method is compatible with <code>sun.misc.BASE64Decoder.decodeBuffer(String)</code>. * @param s A Base64 String to be decoded. * @return An array containing the decoded data bytes. * @throws IllegalArgumentException If the input is not valid Base64 encoded data. */ public static byte[] decodeLines (String s) { char[] buf = new char[s.length()+3]; int p = 0; for (int ip = 0; ip < s.length(); ip++) { char c = s.charAt(ip); if (c != ' ' && c != '\r' && c != '\n' && c != '\t') buf[p++] = c; } while ((p % 4) != 0) buf[p++] = '0'; return decode(buf, 0, p); } /** * Decodes a byte array from Base64 format. * No blanks or line breaks are allowed within the Base64 encoded input data. * @param s A Base64 String to be decoded. * @return An array containing the decoded data bytes. * @throws IllegalArgumentException If the input is not valid Base64 encoded data. */ public static byte[] decode (String s) { return decode(s.toCharArray()); } /** * Decodes a byte array from Base64 format. * No blanks or line breaks are allowed within the Base64 encoded input data. * @param in A character array containing the Base64 encoded data. * @return An array containing the decoded data bytes. * @throws IllegalArgumentException If the input is not valid Base64 encoded data. */ public static byte[] decode (char[] in) { return decode(in, 0, in.length); } /** * Decodes a byte array from Base64 format. * No blanks or line breaks are allowed within the Base64 encoded input data. * @param in A character array containing the Base64 encoded data. * @param iOff Offset of the first character in <code>in</code> to be processed. * @param iLen Number of characters to process in <code>in</code>, starting at <code>iOff</code>. * @return An array containing the decoded data bytes. * @throws IllegalArgumentException If the input is not valid Base64 encoded data. */ public static byte[] decode (char[] in, int iOff, int iLen) { if (iLen%4 != 0) throw new IllegalArgumentException ("Length of Base64 encoded input string is not a multiple of 4."); while (iLen > 0 && in[iOff+iLen-1] == '=') iLen--; int oLen = (iLen*3) / 4; byte[] out = new byte[oLen]; int ip = iOff; int iEnd = iOff + iLen; int op = 0; while (ip < iEnd) { int i0 = in[ip++]; int i1 = in[ip++]; int i2 = ip < iEnd ? in[ip++] : 'A'; int i3 = ip < iEnd ? in[ip++] : 'A'; if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127) throw new IllegalArgumentException ("Illegal character in Base64 encoded data."); int b0 = map2[i0]; int b1 = map2[i1]; int b2 = map2[i2]; int b3 = map2[i3]; if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0) throw new IllegalArgumentException ("Illegal character in Base64 encoded data."); int o0 = ( b0 <<2) | (b1>>>4); int o1 = ((b1 & 0xf)<<4) | (b2>>>2); int o2 = ((b2 & 3)<<6) | b3; out[op++] = (byte)o0; if (op<oLen) out[op++] = (byte)o1; if (op<oLen) out[op++] = (byte)o2; } return out; } //Dummy constructor. private Base64Coder() {} } // end class Base64Coder
配置文件:
<?xml version="1.0" encoding="utf-8" ?> - <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mzh.www" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> - <application android:icon="@drawable/icon" android:label="@string/app_name"> - <activity android:name=".CameraTestActivity" android:label="@string/app_name"> - <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> - <!-- 相机使用权限 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> </manifest>
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2015android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2048Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1558SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 813Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 741转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1026===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1709(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1440在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 985package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1265工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1023SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1233Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 800一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1186运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 905package com.zzl.tools; impor ...
相关推荐
海康相机C++调用Demo是一个关于如何使用C++编程语言与海康威视的IPCamera进行交互,并将捕获的图像转换为OpenCV库可处理格式的实践项目。这个项目涉及到了几个关键的技术点,包括海康相机的SDK调用、多线程编程以及...
以上就是关于Android相机调用和自定义相机的基本介绍。实际开发中,还需要考虑相机权限、横竖屏切换、图片旋转等问题。同时,博客中提到的图片加载也是重要的一环,可以使用像Glide、Picasso这样的库来优化图片显示...
webview 调用手机相机和图库demo(亲测好用) webview.setWebChromeClient(new WebChromeClient() public boolean onShowFileChooser (WebView webView, ValueCallback[]> uploadMsg, FileChooserParams ...
这个资源是从网上下载来的,不过经过本人改造,目前适合高版本android使用,经测试完全没有,可以直接在android studio 3.0上运行。 这个是一个非常简易的webview调用相机拍照和预览的demo,希望能帮助到需要的人。
【Android 海康摄像头调用demo】是一个专为Android平台设计的应用示例,它展示了如何通过SDK与海康威视的摄像头设备进行交互。在早期的版本中,开发者可能会遇到JNI(Java Native Interface)错误,这通常是由于Java...
go语言开发宇视相机LAPI调用demo 对相机的温度,火点检测进行参数设置和获取,分析告警图片
使用大华工业相机,官方提供的demo实现的功能非常少。这个demo是实际工程的初稿,用到多线程4个相机同时运行,可以在用户界面上同时运行4个相机。实现的功能包括搜索设备、打开\关闭、软触发、内部连续触发、设置...
海康相机Demo.zip是一个包含海康威视工业相机SDK演示程序的压缩文件,适用于进行机器视觉和工业检测应用。这个SDK(Software Development Kit)是海康威视为开发者提供的工具集,帮助用户能够有效地控制和利用...
在这个"海康威视网络摄像头Delphi调用Demo"中,我们将深入探讨如何利用Delphi这一强大的RAD(快速应用开发)工具与海康威视的网络摄像头进行交互。 首先,Delphi是一种基于Object Pascal的集成开发环境,以其高效的...
在Android开发中,调用系统相机是一项常见的功能,特别是在创建应用程序需要用户拍摄照片或选择已有图片时。在Android 7.0(API级别24)中,这一过程相对较为直观,但仍然需要遵循一些关键步骤来确保正确实现。本篇...
开发者需要将这些资源导入到QT项目中,以便调用相机的相关功能。 3. **相机搜索**:通过SDK提供的接口,开发者可以编写代码来搜索本地网络中的大华相机设备。这通常涉及到网络发现协议如UPnP或自定义协议。 4. **...
开发者需要理解如何调用这些函数,并处理返回的相机设备信息。 2. **连接相机**: 一旦找到相机,就需要建立连接。这通常包括配置通信参数(如IP地址、端口等),然后通过SDK进行连接。连接成功后,开发者可以对...
本教程将聚焦于“iPhone照相机简单demo”,探讨如何利用系统接口调用iPhone的照相机,实现拍照并查看照片的功能。 首先,我们需要了解的是苹果的Media Capture框架,特别是AVFoundation框架,它是iOS平台上处理音频...
C# winform调用本机摄像头demo 附源码 c#调用本机摄像头,支持多摄像头切换,支持多分辨率切换,支持拍照,这是个demo程序,源码清晰简单。一共几十行代码。采用vs2012开发,winform程序
在本例中,“SDK 迈德威视相机--双相机采集Demo”是一个针对迈德威视(MindVision)相机的开发套件,特别设计用于实现双相机的数据采集和显示功能。迈德威视是一家知名的工业相机制造商,其产品广泛应用于机器视觉、...
描述中提到的“监控相机SDK调用DEMO,使用JAVA开发,相机打开与控制开闸”进一步细化了SDK的主要功能。这里提到了两个关键点:一是“相机打开”,意味着SDK提供了启动和初始化相机设备的功能;二是“控制开闸”,这...
海康工业相机SDK的Demo源代码C++版本是专为机器视觉工程师设计的一款实用工具,它基于著名的图形用户界面库Qt进行开发,旨在帮助开发者更好地理解和应用海康工业相机的API功能,实现图像采集和设备控制。这个SDK库...
本文将深入解析Dalsa相机SDK,结合官方的帮助文档和示例程序(Demo),探讨如何高效地利用C++和C#语言进行相机控制与图像处理。 一、SDK概述 Dalsa相机SDK是一个包含库文件、头文件、示例代码和详细文档的集合,...