Java tutorial
/* * Copyright (c) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.aengbee.android.leanback.ui; import android.Manifest; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.util.Log; import android.widget.Toast; import com.aengbee.android.leanback.R; import com.github.hiteshsondhi88.libffmpeg.ExecuteBinaryResponseHandler; import com.github.hiteshsondhi88.libffmpeg.FFmpeg; import com.github.hiteshsondhi88.libffmpeg.LoadBinaryResponseHandler; import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegCommandAlreadyRunningException; import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegNotSupportedException; import javax.inject.Inject; import butterknife.ButterKnife; import dagger.ObjectGraph; /* * Details activity class that loads VideoDetailsFragment class */ public class VideoDetailsActivity extends LeanbackActivity { public static final String SHARED_ELEMENT_NAME = "hero"; public static final String VIDEO = "Video"; public static final String NOTIFICATION_ID = "NotificationId"; private static final String TAG = "MainActivity"; @Inject FFmpeg ffmpeg; private ProgressDialog progressDialog; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_details); ButterKnife.inject(this); ObjectGraph.create(new DaggerDependencyModule(this)).inject(this); loadFFMpegBinary(); progressDialog = new ProgressDialog(this); progressDialog.setTitle(null); } private void loadFFMpegBinary() { try { ffmpeg.loadBinary(new LoadBinaryResponseHandler() { @Override public void onFailure() { showUnsupportedExceptionDialog(); } }); } catch (FFmpegNotSupportedException e) { showUnsupportedExceptionDialog(); } } public void execFFmpegBinary(final String[] command) { try { ffmpeg.execute(command, new ExecuteBinaryResponseHandler() { @Override public void onFailure(String s) { Log.d(TAG, "FAILED with output : " + s); Toast.makeText(getApplicationContext(), "FAILED", Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(String s) { Log.d(TAG, "SUCCESS with output : " + s); //Toast.makeText(getApplicationContext(), "SUCCESS", Toast.LENGTH_SHORT).show(); Uri videoUri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "/" + Environment.DIRECTORY_MOVIES + "/temp.mkv"); intent2mxplayer(videoUri, "video/*"); } @Override public void onProgress(String s) { Log.d(TAG, "Started command : ffmpeg " + command); //addTextViewToLayout("progress : "+s); progressDialog.setMessage("Processing\n" + s); } @Override public void onStart() { // outputLayout.removeAllViews(); Log.d(TAG, "Started command : ffmpeg " + command); progressDialog.setMessage("Processing Started"); progressDialog.show(); } @Override public void onFinish() { Log.d(TAG, "Finished command : ffmpeg " + command); progressDialog.dismiss(); } }); } catch (FFmpegCommandAlreadyRunningException e) { // do nothing for now } } public void intent2mxplayer(Uri videoUri, String dataType) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(videoUri, dataType); intent.setPackage("com.mxtech.videoplayer.pro"); byte DECODER_SW = 2; intent.putExtra("decode_mode", DECODER_SW); startActivity(intent); } private void showUnsupportedExceptionDialog() { new AlertDialog.Builder(VideoDetailsActivity.this).setIcon(android.R.drawable.ic_dialog_alert) .setTitle(getString(R.string.device_not_supported)) .setMessage(getString(R.string.device_not_supported_message)).setCancelable(false) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { VideoDetailsActivity.this.finish(); } }).create().show(); } }