1648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu/* 2648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * Copyright (C) 2012 The Android Open Source Project 3648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * 4648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the "License"); 5648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * you may not use this file except in compliance with the License. 6648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * You may obtain a copy of the License at 7648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * 8648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * http://www.apache.org/licenses/LICENSE-2.0 9648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * 10648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * Unless required by applicable law or agreed to in writing, software 11648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * distributed under the License is distributed on an "AS IS" BASIS, 12648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * See the License for the specific language governing permissions and 14648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu * limitations under the License. 15648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu */ 16648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 17648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhupackage com.android.gallery3d.app; 18648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 19648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.app.Activity; 20648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.app.ProgressDialog; 21648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.content.Intent; 22648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.net.Uri; 23648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.os.Handler; 24648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.provider.MediaStore; 25648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport android.widget.Toast; 26648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 27648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport com.android.gallery3d.R; 28648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport com.android.gallery3d.data.MediaItem; 29648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport com.android.gallery3d.util.SaveVideoFileInfo; 30648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport com.android.gallery3d.util.SaveVideoFileUtils; 31648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 32648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhuimport java.io.IOException; 33648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 34648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhupublic class MuteVideo { 35648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 36648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private ProgressDialog mMuteProgress; 37648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 381a719804ddd5c6fc9a6914ef5a2b6e914834d1f9Bobby Georgescu private String mFilePath = null; 39648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private Uri mUri = null; 40648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private SaveVideoFileInfo mDstFileInfo = null; 41648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private Activity mActivity = null; 42648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private final Handler mHandler = new Handler(); 43648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 44648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu final String TIME_STAMP_NAME = "'MUTE'_yyyyMMdd_HHmmss"; 45648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 461a719804ddd5c6fc9a6914ef5a2b6e914834d1f9Bobby Georgescu public MuteVideo(String filePath, Uri uri, Activity activity) { 47648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mUri = uri; 481a719804ddd5c6fc9a6914ef5a2b6e914834d1f9Bobby Georgescu mFilePath = filePath; 49648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mActivity = activity; 50648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 51648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 52648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu public void muteInBackground() { 53648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mDstFileInfo = SaveVideoFileUtils.getDstMp4FileInfo(TIME_STAMP_NAME, 54648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mActivity.getContentResolver(), mUri, 55648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mActivity.getString(R.string.folder_download)); 56648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 57648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu showProgressDialog(); 58648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu new Thread(new Runnable() { 59648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu @Override 60648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu public void run() { 61648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu try { 621a719804ddd5c6fc9a6914ef5a2b6e914834d1f9Bobby Georgescu VideoUtils.startMute(mFilePath, mDstFileInfo); 63648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu SaveVideoFileUtils.insertContent( 64648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mDstFileInfo, mActivity.getContentResolver(), mUri); 65648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } catch (IOException e) { 66648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu Toast.makeText(mActivity, mActivity.getString(R.string.video_mute_err), 67648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu Toast.LENGTH_SHORT).show(); 68648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 69648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu // After muting is done, trigger the UI changed. 70648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mHandler.post(new Runnable() { 71648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu @Override 72648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu public void run() { 73648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu Toast.makeText(mActivity.getApplicationContext(), 74648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mActivity.getString(R.string.save_into, 75648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mDstFileInfo.mFolderName), 76648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu Toast.LENGTH_SHORT) 77648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu .show(); 78648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 79648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu if (mMuteProgress != null) { 80648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.dismiss(); 81648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress = null; 82648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 83648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu // Show the result only when the activity not 84648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu // stopped. 85648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 86b5f374c30d06dc0409891f85a4bd5e1e3ddf8700Teng-Hui Zhu intent.setDataAndType(Uri.fromFile(mDstFileInfo.mFile), "video/*"); 87648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu intent.putExtra(MediaStore.EXTRA_FINISH_ON_COMPLETION, false); 88648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mActivity.startActivity(intent); 89648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 90648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 91648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu }); 92648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 93648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu }).start(); 94648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 95648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu 96648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu private void showProgressDialog() { 97648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress = new ProgressDialog(mActivity); 98648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.setTitle(mActivity.getString(R.string.muting)); 99648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.setMessage(mActivity.getString(R.string.please_wait)); 100648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.setCancelable(false); 101648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.setCanceledOnTouchOutside(false); 102648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu mMuteProgress.show(); 103648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu } 104648b339c74da2b863304ffc61c8528cc74c2afb3Teng-Hui Zhu} 105