2626public class TranscoderActivity extends Activity {
2727 private static final String TAG = "TranscoderActivity" ;
2828 private static final int REQUEST_CODE_PICK = 1 ;
29+ private static final int PROGRESS_BAR_MAX = 1000 ;
2930
3031 @ Override
3132 protected void onCreate (Bundle savedInstanceState ) {
@@ -37,6 +38,12 @@ public void onClick(View v) {
3738 startActivityForResult (new Intent (Intent .ACTION_GET_CONTENT ).setType ("video/*" ), REQUEST_CODE_PICK );
3839 }
3940 });
41+ findViewById (R .id .cancel_button ).setOnClickListener (new View .OnClickListener () {
42+ @ Override
43+ public void onClick (View view ) {
44+ MediaTranscoder .getInstance ().cancel ();
45+ }
46+ });
4047 }
4148
4249 @ Override
@@ -63,7 +70,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
6370 }
6471 final FileDescriptor fileDescriptor = parcelFileDescriptor .getFileDescriptor ();
6572 final ProgressBar progressBar = (ProgressBar ) findViewById (R .id .progress_bar );
66- progressBar .setMax (1000 );
73+ progressBar .setMax (PROGRESS_BAR_MAX );
6774 final long startTime = SystemClock .uptimeMillis ();
6875 MediaTranscoder .Listener listener = new MediaTranscoder .Listener () {
6976 @ Override
@@ -72,42 +79,31 @@ public void onTranscodeProgress(double progress) {
7279 progressBar .setIndeterminate (true );
7380 } else {
7481 progressBar .setIndeterminate (false );
75- progressBar .setProgress ((int ) Math .round (progress * 1000 ));
82+ progressBar .setProgress ((int ) Math .round (progress * PROGRESS_BAR_MAX ));
7683 }
7784 }
7885
7986 @ Override
8087 public void onTranscodeCompleted () {
8188 Log .d (TAG , "transcoding took " + (SystemClock .uptimeMillis () - startTime ) + "ms" );
82- Toast .makeText (TranscoderActivity .this , "transcoded file placed on " + file , Toast .LENGTH_LONG ).show ();
83- findViewById (R .id .select_video_button ).setEnabled (true );
84- progressBar .setIndeterminate (false );
85- progressBar .setProgress (1000 );
89+ transcodefinish (progressBar , PROGRESS_BAR_MAX , "transcoded file placed on " + file , parcelFileDescriptor );
8690 startActivity (new Intent (Intent .ACTION_VIEW ).setDataAndType (Uri .fromFile (file ), "video/mp4" ));
87- try {
88- parcelFileDescriptor . close ();
89- } catch ( IOException e ) {
90- Log . w ( "Error while closing" , e );
91- }
91+ }
92+
93+ @ Override
94+ public void onTranscodeCanceled () {
95+ transcodefinish ( progressBar , 0 , "Transcoder canceled." , parcelFileDescriptor );
9296 }
9397
9498 @ Override
9599 public void onTranscodeFailed (Exception exception ) {
96- progressBar .setIndeterminate (false );
97- progressBar .setProgress (0 );
98- findViewById (R .id .select_video_button ).setEnabled (true );
99- Toast .makeText (TranscoderActivity .this , "Transcoder error occurred." , Toast .LENGTH_LONG ).show ();
100- try {
101- parcelFileDescriptor .close ();
102- } catch (IOException e ) {
103- Log .w ("Error while closing" , e );
104- }
100+ transcodefinish (progressBar , 0 , "Transcoder error occurred." , parcelFileDescriptor );
105101 }
106102 };
107103 Log .d (TAG , "transcoding into " + file );
108104 MediaTranscoder .getInstance ().transcodeVideo (fileDescriptor , file .getAbsolutePath (),
109105 MediaFormatStrategyPresets .createAndroid720pStrategy (), listener );
110- findViewById ( R . id . select_video_button ). setEnabled ( false );
106+ switchButtonEnabled ( true );
111107 }
112108 break ;
113109 }
@@ -134,4 +130,21 @@ public boolean onOptionsItemSelected(MenuItem item) {
134130 }
135131 return super .onOptionsItemSelected (item );
136132 }
133+
134+ private void transcodefinish (ProgressBar progressBar , int progress , String toastMessage , ParcelFileDescriptor parcelFileDescriptor ) {
135+ progressBar .setIndeterminate (false );
136+ progressBar .setProgress (progress );
137+ switchButtonEnabled (false );
138+ Toast .makeText (TranscoderActivity .this , toastMessage , Toast .LENGTH_LONG ).show ();
139+ try {
140+ parcelFileDescriptor .close ();
141+ } catch (IOException e ) {
142+ Log .w ("Error while closing" , e );
143+ }
144+ }
145+
146+ private void switchButtonEnabled (boolean isProgress ) {
147+ findViewById (R .id .select_video_button ).setEnabled (!isProgress );
148+ findViewById (R .id .cancel_button ).setEnabled (isProgress );
149+ }
137150}
0 commit comments