zoukankan      html  css  js  c++  java
  • 今日总结

    package me.wcy.music.activity;
    
    import android.Manifest;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.io.File;
    import java.util.Locale;
    
    import me.wcy.music.R;
    import me.wcy.music.constants.Extras;
    import me.wcy.music.constants.RequestCode;
    import me.wcy.music.model.Music;
    import me.wcy.music.utils.CoverLoader;
    import me.wcy.music.utils.FileUtils;
    import me.wcy.music.utils.ImageUtils;
    import me.wcy.music.utils.PermissionReq;
    import me.wcy.music.utils.SystemUtils;
    import me.wcy.music.utils.ToastUtils;
    import me.wcy.music.utils.binding.Bind;
    import me.wcy.music.utils.id3.ID3TagUtils;
    import me.wcy.music.utils.id3.ID3Tags;
    
    public class MusicInfoActivity extends BaseActivity implements View.OnClickListener {
        @Bind(R.id.iv_music_info_cover)
        private ImageView ivCover;
        @Bind(R.id.et_music_info_title)
        private EditText etTitle;
        @Bind(R.id.et_music_info_artist)
        private EditText etArtist;
        @Bind(R.id.et_music_info_album)
        private EditText etAlbum;
        @Bind(R.id.tv_music_info_duration)
        private TextView tvDuration;
        @Bind(R.id.tv_music_info_file_name)
        private TextView tvFileName;
        @Bind(R.id.tv_music_info_file_size)
        private TextView tvFileSize;
        @Bind(R.id.tv_music_info_file_path)
        private TextView tvFilePath;
    
        private Music mMusic;
        private File mMusicFile;
        private Bitmap mCoverBitmap;
    
        public static void start(Context context, Music music) {
            Intent intent = new Intent(context, MusicInfoActivity.class);
            intent.putExtra(Extras.MUSIC, music);
            context.startActivity(intent);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_music_info);
        }
    
        @Override
        protected void onServiceBound() {
            mMusic = (Music) getIntent().getSerializableExtra(Extras.MUSIC);
            if (mMusic == null || mMusic.getType() != Music.Type.LOCAL) {
                finish();
            }
            mMusicFile = new File(mMusic.getPath());
            mCoverBitmap = CoverLoader.get().loadThumb(mMusic);
    
            initView();
        }
    
        private void initView() {
            ivCover.setImageBitmap(mCoverBitmap);
            ivCover.setOnClickListener(this);
    
            etTitle.setText(mMusic.getTitle());
            etTitle.setSelection(etTitle.length());
    
            etArtist.setText(mMusic.getArtist());
            etArtist.setSelection(etArtist.length());
    
            etAlbum.setText(mMusic.getAlbum());
            etAlbum.setSelection(etAlbum.length());
    
            tvDuration.setText(SystemUtils.formatTime("mm:ss", mMusic.getDuration()));
    
            tvFileName.setText(mMusic.getFileName());
    
            tvFileSize.setText(String.format(Locale.getDefault(), "%.2fMB", FileUtils.b2mb((int) mMusic.getFileSize())));
    
            tvFilePath.setText(mMusicFile.getParent());
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_music_info, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == R.id.action_save) {
                save();
                finish();
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
        @Override
        public void onClick(View v) {
            PermissionReq.with(this)
                    .permissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    .result(new PermissionReq.Result() {
                        @Override
                        public void onGranted() {
                            ImageUtils.startAlbum(MusicInfoActivity.this);
                        }
    
                        @Override
                        public void onDenied() {
                            ToastUtils.show(R.string.no_permission_select_image);
                        }
                    })
                    .request();
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode != RESULT_OK) {
                return;
            }
    
            if (requestCode == RequestCode.REQUEST_ALBUM && data != null) {
                ImageUtils.startCorp(this, data.getData());
            } else if (requestCode == RequestCode.REQUEST_CORP) {
                File corpFile = new File(FileUtils.getCorpImagePath(this));
                if (!corpFile.exists()) {
                    ToastUtils.show("图片保存失败");
                    return;
                }
    
                mCoverBitmap = BitmapFactory.decodeFile(corpFile.getPath());
                ivCover.setImageBitmap(mCoverBitmap);
                corpFile.delete();
            }
        }
    
        private void save() {
            if (!mMusicFile.exists()) {
                ToastUtils.show("歌曲文件不存在");
                return;
            }
    
            ID3Tags id3Tags = new ID3Tags.Builder().setCoverBitmap(mCoverBitmap)
                    .setTitle(etTitle.getText().toString())
                    .setArtist(etArtist.getText().toString())
                    .setAlbum(etAlbum.getText().toString())
                    .build();
            ID3TagUtils.setID3Tags(mMusicFile, id3Tags, false);
    
            // 刷新媒体库
            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(mMusicFile));
            sendBroadcast(intent);
    
            ToastUtils.show("保存成功");
        }
    }
  • 相关阅读:
    input框和文字对齐问题
    滚动条位置判断
    【HDOJ】2007平方和与立方和
    POJ3177 Redundant Paths
    POJ3694 Network(tarjan求桥)
    UVA315 Network
    POJ1236 Network of schools
    ZOJ1008 Gnome Tetravex
    ZOJ007 Numerical Summation of a Series(纯数学)
    ZOJ1006 Do the Untwist
  • 原文地址:https://www.cnblogs.com/feng747/p/14910489.html
Copyright © 2011-2022 走看看