国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

android實(shí)現(xiàn)定時(shí)拍照并發(fā)送微博功能

2019-10-22 18:09:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近在做android方面的開(kāi)發(fā),下面是android自動(dòng)對(duì)焦并拍照的小例子:

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;  // 報(bào)像頭  private Camera mCamera;  public static Oauth2AccessToken accessToken;  StatusesAPI api;  @Override  public 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);  // 創(chuàng)建 定時(shí)線程 注意不要使用Timer  pool = Executors.newFixedThreadPool(1);  // 預(yù)覽控件  SurfaceView surfaceView = (SurfaceView) this   .findViewById(R.id.surfaceView);  // 設(shè)置參數(shù)  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() {    @Override   public void onClick(View v) {   if (mCamera != null) {    start.setEnabled(false);    // 拍照前需要對(duì)焦 獲取清析的圖片    mCamera.autoFocus(new AutoFocusCallback() {    // 對(duì)焦結(jié)束    @Override    public void onAutoFocus(boolean success, Camera camera) {     // 對(duì)焦成功     Toast.makeText(MainActivity.this, "對(duì)焦成功 !!",      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() {   @Override   public void onClick(View v) {   mIsRunning = false;   // 取消任務(wù)   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() {   @Override   public void onClick(View v) {   mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);   mSsoHandler.authorize(new UserInfoListener());   }  });  }  class UserInfoListener implements WeiboAuthListener{  @Override  public void onCancel() {   Log.v("sina", "------onCancel");  }     @Override  public void onComplete(Bundle arg0) {   String token = arg0.getString("access_token");   String expires_in = arg0.getString("expires_in");   accessToken = new Oauth2AccessToken(    token, expires_in);    }   @Override  public void onError(WeiboDialogError arg0) {   Log.v("sina", "------onError"+arg0.getMessage());    }   @Override  public void onWeiboException(WeiboException arg0) {   Log.v("sina", "------onWeiboException"+arg0.getMessage());    }    }   @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data) {  if (mSsoHandler != null) {   Log.v("time", "sso回調(diào)");   mSsoHandler.authorizeCallBack(requestCode, resultCode, data);   }  }   @Override  protected void onDestroy() {  super.onDestroy();  mIsRunning = false;  if (pool != null) {   pool.shutdownNow();  }  }   // 定時(shí)器  private ExecutorService pool = null;  private boolean mIsRunning = true;  // 定時(shí)任務(wù)  private Runnable mRunnable = new Runnable() {  @Override  public void run() {   // 定時(shí)觸發(fā)拍照方法   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+"測(cè)試分享", path, "0", "0", new RequestListener() {      @Override   public void onIOException(IOException arg0) {    Log.v("sina", "分享失敗"+arg0.getMessage());   }      @Override   public void onError(WeiboException arg0) {    Log.v("sina", "分享失敗"+arg0.getMessage());   }      @Override   public void onComplete(String arg0) {    Log.v("sina", "分享成功"+arg0);   }   });  }else{   mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);   mSsoHandler.authorize(new UserInfoListener());   share(path);  }  }  // 照片回調(diào)  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();   }  }   }   // 預(yù)覽界面回調(diào)  private final class SurfaceCallback implements Callback {  // 預(yù)覽界面被創(chuàng)建  public void surfaceCreated(SurfaceHolder holder) {   try {   System.out.println("surfaceCreated");   mCamera = Camera.open();// 打開(kāi)攝像頭   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 block   e.printStackTrace();   }   mCamera.startPreview();// 開(kāi)始預(yù)覽  }   // 預(yù)覽界面被銷(xiāo)毀  public void surfaceDestroyed(SurfaceHolder holder) {   System.out.println("surfaceDestroyed");   if (mCamera != null) {   mCamera.release();   mCamera = null;   }  }   }   @Override  public boolean onTouchEvent(MotionEvent event) {  if (event.getAction() == MotionEvent.ACTION_DOWN) {   mPannelController.setVisibility(ViewGroup.VISIBLE);   return true;  }  return super.onTouchEvent(event);  }  } 

界面如下圖:

android,定時(shí)拍照,微博

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新郑市| 科技| 威远县| 泰州市| 新干县| 巴青县| 利辛县| 禹州市| 枝江市| 隆回县| 普格县| 秭归县| 镇赉县| 慈溪市| 拜城县| 湄潭县| 天柱县| 开阳县| 西华县| 宁武县| 宾阳县| 沛县| 合作市| 清水县| 信丰县| 施秉县| 石城县| 阿勒泰市| 福清市| 潮安县| 仪陇县| 枝江市| 巴东县| 年辖:市辖区| 哈尔滨市| 新干县| 新竹县| 耒阳市| 新丰县| 交城县| 亚东县|