2018年12月28日 星期五

[Android]_ch10.7_調用相機錄影功能



[Android]_ch10.7_調用相機錄影功能

package com.gjun.ch26_takephoto;



import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.List;



import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.content.pm.ResolveInfo;

import android.graphics.Bitmap;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.ImageView;

import android.widget.MediaController;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.VideoView;





public class MainActivity extends Activity {

TextView tv;

ImageView iv;

VideoView vv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.textView1);

        iv=(ImageView)findViewById(R.id.imageView1);

        vv=(VideoView)findViewById(R.id.videoView1);

    }





    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }



    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){

    case R.id.item1:

    if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_IMAGE_CAPTURE)){

    Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    startActivityForResult(intent, 100);

    }else{

    Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();

    }

    break;

    case R.id.item2:

    if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_VIDEO_CAPTURE)){

    Intent intent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

    startActivityForResult(intent, 200);

    }else{

    Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();

    }

    case R.id.item3:

    finish();

    break;

    }

     

        return super.onOptionsItemSelected(item);

    }

    public void saveImage(Bitmap bitmap){

    if(!isSDCARDExit())

    Toast.makeText(MainActivity.this, "找不到SD CARD!", Toast.LENGTH_SHORT).show();

    File imageDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

    if(!imageDir.exists())

    imageDir.mkdirs();

    File imageFile=new File(imageDir,"pic01.jpg");

    FileOutputStream fis;

try {

fis = new FileOutputStream(imageFile);

BufferedOutputStream bos=new BufferedOutputStream(fis);

bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);

bos.flush();

bos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Toast.makeText(MainActivity.this, "存檔完畢!", Toast.LENGTH_SHORT).show();

tv.setText("檔案位置---"+imageFile.toString());

    }

    public boolean isSDCARDExit(){

    String state=Environment.getExternalStorageState();

    if(state.equals(Environment.MEDIA_MOUNTED))

    return true;

    else

    return false;

    }

    public boolean isIntentAvailable(Context context,String action){

    PackageManager pm=context.getPackageManager();

    Intent intent=new Intent(action);

    List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

    if(list.size()>0)

    return true;

    else

    return false;

    }





@Override

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, intent);

if(resultCode==RESULT_OK){

switch(requestCode){

case 100:

Bundle bundle=intent.getExtras();

Bitmap bitmap=(Bitmap)bundle.get("data");

iv.setImageBitmap(bitmap);

saveImage(bitmap);

break;

case 200:

Uri uri=intent.getData();

MediaController controller=new MediaController(MainActivity.this);

vv.setMediaController(controller);

vv.setVideoURI(uri);

vv.start();

}

}

}



}


沒有留言:

張貼留言

Ether.fi Cash Card 一張所有人必備的加密貨幣信用卡   [Ether.fi Cash Card] : https://www.ether.fi/app/cash/sign-up?ref_code=d27f8523 ------國際交易所------ [Bitg...