Android基础_相机 图库 infaceview(十)

来源:互联网 发布:淘宝兼职可信不 编辑:程序博客网 时间:2024/05/23 12:34

简易MP3播放器

public class MainActivity extends Activity implements OnSeekBarChangeListener, OnTouchListener {    private SurfaceView mSV;    private MediaPlayer mMediaPlayer;    private SeekBar mSb;    /* 1.获取SurfaceView     * 2.创建一个MediaPlayer();     * 3.mMedia.setDataSource(path);     * 4.mm.setDisplay(holder);     *      holder/sv.getHolder();     *      控制器,真正实现控制界面的     * 5.mm.prepare();     * 6.mm.start();     * 7.让SeekBar每500毫秒刷新     *      1.new Timer(new task,when,period);     *      2.设置seekbar最大值为音频的长度      *      sb.setMax(media.getduaration());     *      3.进度对齐       *      自带ui线程操作,不必返回主线程     *      mSb.setProgress(mMediaPlayer.getCurrentPosition());     * 8.视频的跳闸un     *  mMediaPlayer.seekTo(mSb.getProgress());     *       * */    /*surfaceview的优点     * 1.双缓冲,不会一会儿下载一会播放;边下载边解码边播放,不仅仅是用来播放视频,也可以用来做游戏     * 2.传统的会在下载后才播放     * */    /* 1.创建media     * 2.media.setDataSource(getabsolutedpath,"x.xx");     * 3.sv.getholder();     *  holder.addcallback(new callback(){     *          1.mMediaPlayer.setDisplay(holder);     *          2.media.prepare();     *          3.media.start();     * });     * */    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        mSV = (SurfaceView)findViewById(R.id.sv);        mSV.setOnTouchListener(this);        mSb = (SeekBar)findViewById(R.id.sb);        mSb.setOnSeekBarChangeListener(this);        mSb.setVisibility(View.GONE);        SurfaceHolder holder = mSV.getHolder();        holder.addCallback(new Callback() {            @Override            public void surfaceDestroyed(SurfaceHolder holder) {                // TODO Auto-generated method stub            }            @Override            public void surfaceCreated(SurfaceHolder holder) {                try {                    mMediaPlayer = new MediaPlayer();                    mMediaPlayer.setDataSource(getMp3FilePath());                    mMediaPlayer.setDisplay(holder);                    mMediaPlayer.prepare();                    mMediaPlayer.start();                    mSb.setMax(mMediaPlayer.getDuration());                    new Timer().schedule(new TimerTask() {                        @Override                        public void run() {                            mSb.setProgress(mMediaPlayer.getCurrentPosition());                        }                    }, 500, 500);                } catch (Exception e) {                }                           }            @Override            public void surfaceChanged(SurfaceHolder holder, int format, int width,                    int height) {                // TODO Auto-generated method stub            }        });    }    private String getMp3FilePath(){        File file = new File(getFilesDir(),"oppo.3gp");        return file.getAbsolutePath();    }    public void play(View v){    }    @Override    public void onProgressChanged(SeekBar seekBar, int progress,            boolean fromUser) {        // TODO Auto-generated method stub    }    @Override    public void onStartTrackingTouch(SeekBar seekBar) {        // TODO Auto-generated method stub    }    @Override    public void onStopTrackingTouch(SeekBar seekBar) {        mMediaPlayer.seekTo(mSb.getProgress());    }    /* 1.设置进度条可见     * 2.三秒后消失     * */    @Override    public boolean onTouch(View v, MotionEvent event) {        mSb.setVisibility(View.VISIBLE);        new Timer().schedule(new TimerTask() {            @Override            public void run() {                runOnUiThread(new Runnable() {                    public void run() {                        mSb.setVisibility(View.GONE);                    }                });            }        }, 3000);        return false;    }}

使用本地相机进行拍照

public class MainActivity extends Activity {    private ImageView mIv;    private int TakePhotoCode=0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mIv=(ImageView) findViewById(R.id.iv);    }    /*需求:拍照     * 1.启动系统的拍照界面     *      new Intent(android.provider.mediastore.action.ACTION_IMAGE_ACPTURE);     * 2.在onactivityResult中     *      1.判断请求吗     *      2.判断返回码     *      3.获取Bundle对象     *          data.getExtras();     *      4.获取bundle中对象的数据     *          1.实现serializable的对象(java定义的)     *          2.实现parcelable的对象(android定义的)     *                  1.bundle.getParcelable("data");     *                  2.并将其转换为bitmap     * */    public void takephoto(View v){        Log.v("meeeeeee", "开始拍照");        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);        startActivityForResult(intent, TakePhotoCode);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode==TakePhotoCode) {            if (resultCode==RESULT_OK) {                Bundle bundle = data.getExtras();                 Bitmap photo= bundle.getParcelable("data");                 mIv.setImageBitmap(photo);            }            else if (resultCode==RESULT_CANCELED) {                Log.v("meeeeeee", "点击返回");            }        }    }}

保存照片至本地

    /*需求:拍照     * 1.创建一个空白图片     *      new File(getFileDir(),"xx.jpp");     *      file.createNewFile();     * 2.启动系统的拍照界面     *      1.Intent/new Intent(android.provider.mediastore,ACTION_IMAGE_CAPTURE);     *      2.intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);     *              Uri/Uri.from(tempImageFile)     *                  File tempImageFile = getTempImageFile();     *      3.startActivityForResult     * */    File file;    public void takephoto(View v) {        String state = Environment.getExternalStorageState();        if (!state.equals(Environment.MEDIA_MOUNTED)) {            Toast.makeText(MainActivity.this, "没找到sd卡", 0).show();        }else {            SimpleDateFormat    formatter    =   new    SimpleDateFormat    ("yyyy年MM月dd日    HH:mm:ss");                   Date    curDate    =   new    Date(System.currentTimeMillis());//获取当前时间                   String    str    =    formatter.format(curDate);            file = new File(Environment.getExternalStorageDirectory(), str+".jpg");            if (!file.exists()) {                try {                    file.createNewFile();                } catch (IOException e) {                }            }            Intent intent = new Intent(                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);            Uri uri = Uri.fromFile(file);            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);            startActivityForResult(intent, TakePhotoCode);        }    }    /*拍照成功后的处理操作     * 1.显示图片     * */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode==TakePhotoCode) {            if (resultCode==RESULT_OK) {                Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());                mIv.setImageBitmap(bmp);                Toast.makeText(MainActivity.this, "已保存至:"+file.getAbsolutePath(), 0).show();                return;            }            else if (resultCode==RESULT_CANCELED) {                Log.v("meeeeeee", "点击返回");            }        }    }    /*判断sd卡是否存在     * 1.获取sd卡状态     * 2.判断状态     * 3.赋予sd卡读取权限READ_EXTRANAL_STORAGE     *   赋予sd卡读取权限WRITE_EXTRANAL_STORAGE     * */    /*创建SD卡文件     * 1.new File(environment.getexternalStorageDirectory());     * file.exisets()     * 2.file.createnewFile();     * */    public boolean judgeSDCardExist(){        String state = Environment.getExternalStorageState();        if (state.equals(Environment.MEDIA_MOUNTED)) {            return true;        }        return false;    }

简单的格式化

SimpleDateFormat    formatter    =   new    SimpleDateFormat    ("yyyy年MM月dd日    HH:mm:ss");                   Date    curDate    =   new    Date(System.currentTimeMillis());//获取当前时间                   String    str    =    formatter.format(curDate);

打开本地相册

    /*相册功能     * 1.创建一个带有action的Intent     *   new intent(intent.action_pick)     * 2.设置intent的数据和类型     *  intetn.setdataandtype(data,mime);     *      1.目标数据     *      2.mimetype     * */    public void photos(View v){        Intent intent = new Intent(Intent.ACTION_PICK);        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");        startActivityForResult(intent, GET_PHOTOS);        /*从文件夹中检索图片的         *      1.Intent intent = new Intent(Intent.ACTION_PICK);         *      2.intent.setType("image/*");         *      3.startActivityForResult(intent,ACTION_PICK_IMAGE);         * */    }    /**     * 3.获取目标的data的uri对象     *  Uri/data.getData();     * */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == GET_PHOTOS && resultCode == RESULT_OK) {            Uri uri = data.getData();            if (uri != null) {                // 该图片的类型不是该操作产生的图片                try {                    Bitmap bmp = Media.getBitmap(getContentResolver(), uri);                    mIv.setImageBitmap(bmp);                } catch (Exception e) {                    Toast.makeText(MainActivity.this, "有异常", 0).show();                }            } else {                // 该图片的类型是该操作产生的图片                Bundle bundle = data.getExtras();                if (bundle != null) {                    Bitmap bmp = bundle.getParcelable("data");                    mIv.setImageBitmap(bmp);                }            }        }    }
阅读全文
0 0
原创粉丝点击