最近在做android方面的开发,下面是android自动对焦并拍照的小例子:

package com.comnvi.camera;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;import com.comnvi.camera.share.AccessTokenKeeper;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.weibo.oauthv2.OAuthV2;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
import com.weibo.sdk.android.api.StatusesAPI;
import com.weibo.sdk.android.net.RequestListener;
import com.weibo.sdk.android.sso.SsoHandler;import android.app.Activity;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.os.Environment;
import android.os.Looper;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity{private Weibo mWeibo;SsoHandler mSsoHandler;public static final String SINA_CONSUMER_KEY = "2022960751";public static final String SINA_REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";// 按钮面板private View mPannelController;// 报像头private Camera mCamera;public static Oauth2AccessToken accessToken;StatusesAPI api;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("onCreate");requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.main);mPannelController = this.findViewById(R.id.buttonlayout);// 创建 定时线程 注意不要使用Timerpool = Executors.newFixedThreadPool(1);// 预览控件SurfaceView surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);// 设置参数surfaceView.getHolder().setFixedSize(176, 144);surfaceView.getHolder().setKeepScreenOn(true);surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().addCallback(new SurfaceCallback());// 添加事件final Button start = (Button) findViewById(R.id.takepicture);start.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (mCamera != null) {start.setEnabled(false);// 拍照前需要对焦 获取清析的图片mCamera.autoFocus(new AutoFocusCallback() {// 对焦结束@Overridepublic void onAutoFocus(boolean success, Camera camera) {// 对焦成功Toast.makeText(MainActivity.this, "对焦成功 !!",Toast.LENGTH_SHORT).show();mIsRunning = true;// 10s 一张pool.execute(mRunnable);//mCamera.takePicture(null, null, new MyPictureCallback());}});}}});Button end = (Button) findViewById(R.id.endtake);end.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mIsRunning = false;// 取消任务start.setEnabled(true);}});mWeibo = Weibo.getInstance(SINA_CONSUMER_KEY, SINA_REDIRECT_URL);accessToken = AccessTokenKeeper.readAccessToken(this);Button sina = (Button) findViewById(R.id.sina);sina.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);mSsoHandler.authorize(new UserInfoListener());}});}class UserInfoListener implements WeiboAuthListener{@Overridepublic void onCancel() {Log.v("sina", "------onCancel");}@Overridepublic void onComplete(Bundle arg0) {String token = arg0.getString("access_token");String expires_in = arg0.getString("expires_in");accessToken = new Oauth2AccessToken(token, expires_in);}@Overridepublic void onError(WeiboDialogError arg0) {Log.v("sina", "------onError"+arg0.getMessage());}@Overridepublic void onWeiboException(WeiboException arg0) {Log.v("sina", "------onWeiboException"+arg0.getMessage());}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (mSsoHandler != null) {Log.v("time", "sso回调");mSsoHandler.authorizeCallBack(requestCode, resultCode, data);}}@Overrideprotected void onDestroy() {super.onDestroy();mIsRunning = false;if (pool != null) {pool.shutdownNow();}}// 定时器private ExecutorService pool = null;private boolean mIsRunning = true;// 定时任务private Runnable mRunnable = new Runnable() {@Overridepublic void run() {// 定时触发拍照方法while (mIsRunning) {mCamera.takePicture(null, null, new MyPictureCallback());try {Thread.sleep(100* 1000);} catch (InterruptedException e) {e.printStackTrace();}}}};public void share(String path){if (accessToken.isSessionValid()&&!"".equals(path)) {AccessTokenKeeper.keepAccessToken(MainActivity.this, accessToken);api = new StatusesAPI(accessToken);Date now=new Date();SimpleDateFormat temp=new SimpleDateFormat("MM月dd日  HH:mm");String str=temp.format(now);api.upload(str+"测试分享", path, "0", "0", new RequestListener() {@Overridepublic void onIOException(IOException arg0) {Log.v("sina", "分享失败"+arg0.getMessage());}@Overridepublic void onError(WeiboException arg0) {Log.v("sina", "分享失败"+arg0.getMessage());}@Overridepublic void onComplete(String arg0) {Log.v("sina", "分享成功"+arg0);}});}else{mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);mSsoHandler.authorize(new UserInfoListener());share(path);}}// 照片回调private final class MyPictureCallback implements PictureCallback {// 照片生成后public void onPictureTaken(byte[] data, Camera camera) {try {System.out.println("onPictureTaken");File jpgFile = new File(Environment.getExternalStorageDirectory()+"/ceshi");if (!jpgFile.exists()) {jpgFile.mkdir();}File jpgFile1 = new File(jpgFile.getAbsoluteFile(),System.currentTimeMillis() + ".jpg");System.out.println(jpgFile1.getAbsolutePath());Toast.makeText(MainActivity.this,"保存成功 !!" + jpgFile1.getAbsolutePath(),Toast.LENGTH_SHORT).show();FileOutputStream outStream = new FileOutputStream(jpgFile1);outStream.write(data);outStream.close();share(jpgFile1.getAbsolutePath());camera.startPreview();} catch (Exception e) {e.printStackTrace();}}}// 预览界面回调private final class SurfaceCallback implements Callback {// 预览界面被创建public void surfaceCreated(SurfaceHolder holder) {try {System.out.println("surfaceCreated");mCamera = Camera.open();// 打开摄像头Camera.Parameters parameters = mCamera.getParameters();parameters.setPreviewSize(800, 480);parameters.setPreviewFrameRate(5);parameters.setPictureSize(1024, 768);parameters.setJpegQuality(80);mCamera.setParameters(parameters);} catch (Exception e) {e.printStackTrace();}}public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {System.out.println("surfaceChanged");try {mCamera.setPreviewDisplay(holder);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}mCamera.startPreview();// 开始预览}// 预览界面被销毁public void surfaceDestroyed(SurfaceHolder holder) {System.out.println("surfaceDestroyed");if (mCamera != null) {mCamera.release();mCamera = null;}}}@Overridepublic boolean onTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN) {mPannelController.setVisibility(ViewGroup.VISIBLE);return true;}return super.onTouchEvent(event);}}

界面如下图:


我使用的是新浪微博的分享,首先要登录新浪微博(具体的登录过程这里就不说了,大家都了解的昂)。登录成功后点击开始拍照,拍照完成后将照片保存到手机中然后自动去调用新浪的分享方法。

具体是怎么实现的,看上面贴的源码就知道了。

android 定时拍照并发送微博相关推荐

  1. android 实现自动拍照,android实现定时拍照并发送微博功能

    最近在做android方面的开发,下面是android自动对焦并拍照的小例子: package com.comnvi.camera; import java.io.File; import java. ...

  2. python - 定时拍照并发送到qq

    写在前面 前两天发生一些恶心的事,突然想用python实现自动拍照的功能间接起到监控的作用. 网上搜了各种资料,整理如下. 代码 from VideoCapture import Device fro ...

  3. Android新浪微博之发送微博

    发送微博主要就是调用新浪微博给的接口.调用android拍照和对拍照后的图片处理. 拍照时调用的系统接口代码是: Intent takephoto = new Intent(android.provi ...

  4. Android Camera相机开发示例、Android 开发板 USB摄像头采集、定期拍照、定时拍照,安卓调用摄像头拍照、Android摄像头预览、监控,USB摄像头开发、摄像头监控代码

    我们有个需求,在机器上加个摄像头,定时拍照: 我到网上搜索,发现没有快速上手和简单使用的: 个人感觉,大部分博客写得很乱,或者长篇大论: 而我只想简单实现功能,并不打算学习多少理论: 下面代码是我写来 ...

  5. 调用android手机微博客户端发送微博

    用隐式意图打开android手机中安装的微博客户端发送微博. 反编译一下新浪微博的AndroidManifest.xml,发送微博的EditActivity <activityandroid:t ...

  6. android 定时发送短信实现

    1.主界面 2.定时 3.完成定时 4.是否删除定时 5.定时短信发送 源码下载  软件下载 向博主发送邮件

  7. android 定时闹钟逻辑,Android 定时执行任务 AlarmManager的使用(可用于闹钟开发)...

    Android 定时执行任务 AlarmManager的使用(可用于闹钟开发) 2011年7月13日加注:所有的定时任务在手机重启后会消失,如果需要重启后继续用,可以加个开机自启,然后重新设置. Al ...

  8. 工控电脑触摸显示屏幕监控报警方案-基于WiFi摄像头定时拍照图像识别技术

    一. 设备安装 用类似这种支架固定摄像头 二. 定时拍照 4个摄像头,各自对一个被监控设备的屏幕以指定的时间间隔进行定时拍照,并上传到指定的ftp服务器. 4个摄像头分别传图片到4个目录 目录结构: ...

  9. android 相机拍照返回,Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题...

    版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是"确定"图标,返回的resultCode = -1(Activity.RESU ...

最新文章

  1. HTML基础部分(3)iframe,提交信息的一些知识
  2. 九价抢不到?多试试这几个GitHub上的开源项目
  3. 【Android 异步操作】手写 Handler ( Handler 发送与处理消息 | Handler 初始化 | 完整 Handler 代码 )
  4. 4. SQL Server数据库状态监控 - 作业状态
  5. STL体系结构与内核分析-2-STL体系结构基础介绍(侯捷)--笔记
  6. 计算机基础教育德育教学,【家庭教育论文】计算机基础教学的德育教育(共2650字)...
  7. CTFshow 文件上传 web165
  8. 数组(ArrayList)底层怎样扩容
  9. 电脑装机完没有efi_电脑装机如何选内存?看完这篇就全懂了
  10. 安装rtx时报错因计算机中丢失lo,policy.3.1.IntervalZero.RTX64.dll
  11. Android逆向笔记-查看app的log打印(含调试方式打开)
  12. js中判断对象数据类型的方法
  13. sae mysql_connect_SAE连接数据库 - zxm的个人空间 - OSCHINA - 中文开源技术交流社区
  14. grpc通信原理_gRPC原理简析
  15. Web终端SSH功能
  16. 浅析阿里数据技术架构(下)大规模分布式知识图谱
  17. Visual Studio2019使用nmake编译调用libcurl库
  18. Hbase------刘飞
  19. “听我说谢谢你”还能用古诗来说?清华搞了个“据意查句”神器,一键搜索你想要的名言警句...
  20. Laravel 存在SQL注入漏洞

热门文章

  1. 学习第一周第一天(星期四)
  2. ITK读NII、MHD、MHA、DICOM图像
  3. 怎么把桌面上的计算机软件移除,笔记本怎样卸载软件_笔记本桌面上的软件怎么卸载-win7之家...
  4. Windows_CMD实用技巧
  5. Oracle 数据怎么实时同步到 DM DB 达梦数据库 | 亲测干货建议收藏
  6. JS 打印函数堆栈信息
  7. 什么是绝对路径,什么是相对路径,绝对路径和相对路径的区别?
  8. strchr函数的应用
  9. 2021年安全员-A证(山东省-2021版)最新解析及安全员-A证(山东省-2021版)实操考试视频
  10. 网络安全笔记——第十天:Linux操作系统目录结构