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

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

更多相关文章

  1. 制作登录界面的布局时候,可以使用 android:stretchColumns="0,3"
  2. Android用户界面与布局
  3. Android用户界面 UI组件--自动提示输入框 AutoCompleteTextView
  4. android讲义2之输入界面
  5. Android利用sqlite制作简单登录界面
  6. android 实现qq聊天对话界面效果
  7. Android 启动界面Splash
  8. Android官方入门文档[3]构建一个简单的用户界面
  9. Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转

随机推荐

  1. Android 内存
  2. S5PV210 ANDROID 为摄像头增加闪光灯
  3. 系出名门Android(6) - 控件(View)
  4. Android——Gallery 图片拖动效果
  5. Android 屏幕设置
  6. Android组件应用
  7. android之应用程序退到android桌面的实现
  8. Android SDK下载和更新失败的解决方法!!!
  9. Android file transfer/Upload
  10. AndroidManifest.xml 中application 的 a