26
26
public class TranscoderActivity extends Activity {
27
27
private static final String TAG = "TranscoderActivity" ;
28
28
private static final int REQUEST_CODE_PICK = 1 ;
29
+ private static final int PROGRESS_BAR_MAX = 1000 ;
29
30
30
31
@ Override
31
32
protected void onCreate (Bundle savedInstanceState ) {
@@ -37,6 +38,12 @@ public void onClick(View v) {
37
38
startActivityForResult (new Intent (Intent .ACTION_GET_CONTENT ).setType ("video/*" ), REQUEST_CODE_PICK );
38
39
}
39
40
});
41
+ findViewById (R .id .cancel_button ).setOnClickListener (new View .OnClickListener () {
42
+ @ Override
43
+ public void onClick (View view ) {
44
+ MediaTranscoder .getInstance ().cancel ();
45
+ }
46
+ });
40
47
}
41
48
42
49
@ Override
@@ -63,7 +70,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
63
70
}
64
71
final FileDescriptor fileDescriptor = parcelFileDescriptor .getFileDescriptor ();
65
72
final ProgressBar progressBar = (ProgressBar ) findViewById (R .id .progress_bar );
66
- progressBar .setMax (1000 );
73
+ progressBar .setMax (PROGRESS_BAR_MAX );
67
74
final long startTime = SystemClock .uptimeMillis ();
68
75
MediaTranscoder .Listener listener = new MediaTranscoder .Listener () {
69
76
@ Override
@@ -72,42 +79,31 @@ public void onTranscodeProgress(double progress) {
72
79
progressBar .setIndeterminate (true );
73
80
} else {
74
81
progressBar .setIndeterminate (false );
75
- progressBar .setProgress ((int ) Math .round (progress * 1000 ));
82
+ progressBar .setProgress ((int ) Math .round (progress * PROGRESS_BAR_MAX ));
76
83
}
77
84
}
78
85
79
86
@ Override
80
87
public void onTranscodeCompleted () {
81
88
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 );
86
90
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 );
92
96
}
93
97
94
98
@ Override
95
99
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 );
105
101
}
106
102
};
107
103
Log .d (TAG , "transcoding into " + file );
108
104
MediaTranscoder .getInstance ().transcodeVideo (fileDescriptor , file .getAbsolutePath (),
109
105
MediaFormatStrategyPresets .createAndroid720pStrategy (), listener );
110
- findViewById ( R . id . select_video_button ). setEnabled ( false );
106
+ switchButtonEnabled ( true );
111
107
}
112
108
break ;
113
109
}
@@ -134,4 +130,21 @@ public boolean onOptionsItemSelected(MenuItem item) {
134
130
}
135
131
return super .onOptionsItemSelected (item );
136
132
}
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
+ }
137
150
}
0 commit comments