You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
FFmpegAndroid/app/src/main/java/com/frank/ffmpeg/activity/MainActivity.java

119 lines
4.2 KiB

package com.frank.ffmpeg.activity;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.BounceInterpolator;
import com.frank.ffmpeg.R;
import com.frank.ffmpeg.floating.FloatPlayerView;
import com.frank.ffmpeg.floating.FloatWindow;
import com.frank.ffmpeg.floating.MoveType;
import com.frank.ffmpeg.floating.Screen;
/**
* 使用ffmpeg进行音视频处理入口
* Created by frank on 2018/1/23.
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private final static String[] mPermissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
};
private final static int CODE_STORAGE = 999;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
checkPermission();
}
private void initView() {
findViewById(R.id.btn_audio).setOnClickListener(this);
findViewById(R.id.btn_video).setOnClickListener(this);
findViewById(R.id.btn_media).setOnClickListener(this);
findViewById(R.id.btn_play).setOnClickListener(this);
findViewById(R.id.btn_push).setOnClickListener(this);
findViewById(R.id.btn_live).setOnClickListener(this);
findViewById(R.id.btn_filter).setOnClickListener(this);
findViewById(R.id.btn_reverse).setOnClickListener(this);
findViewById(R.id.btn_floating).setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
switch (v.getId()){
case R.id.btn_audio://音频处理
intent.setClass(MainActivity.this, AudioHandleActivity.class);
break;
case R.id.btn_video://视频处理
intent.setClass(MainActivity.this, VideoHandleActivity.class);
break;
case R.id.btn_media://音视频处理
intent.setClass(MainActivity.this, MediaHandleActivity.class);
break;
case R.id.btn_play://音视频播放
intent.setClass(MainActivity.this, MediaPlayerActivity.class);
break;
case R.id.btn_push://FFmpeg推流
intent.setClass(MainActivity.this, PushActivity.class);
break;
case R.id.btn_live://实时推流直播:AAC音频编码、H264视频编码、RTMP推流
intent.setClass(MainActivity.this, LiveActivity.class);
break;
case R.id.btn_filter://滤镜特效
intent.setClass(MainActivity.this, FilterActivity.class);
break;
case R.id.btn_reverse://视频倒播
intent.setClass(MainActivity.this, VideoReverseActivity.class);
break;
case R.id.btn_floating://悬浮窗播放
floatingToPlay();
return;
default:
break;
}
startActivity(intent);
}
//动态申请权限
private void checkPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(mPermissions[0]) != PackageManager.PERMISSION_GRANTED){
requestPermissions(mPermissions, CODE_STORAGE);
}
}
}
/**
* 悬浮窗播放
*/
private void floatingToPlay(){
if (FloatWindow.get() != null) {
return;
}
FloatPlayerView floatPlayerView = new FloatPlayerView(getApplicationContext());
FloatWindow
.with(getApplicationContext())
.setView(floatPlayerView)
.setWidth(Screen.width, 0.4f)
.setHeight(Screen.width, 0.4f)
.setX(Screen.width, 0.8f)
.setY(Screen.height, 0.3f)
.setMoveType(MoveType.slide)
.setFilter(false)
.setMoveStyle(500, new BounceInterpolator())
.build();
FloatWindow.get().show();
}
}