Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
group 'com.befovy.fijkplayer'
version '0.11.0'
version '0.11.3'

apply plugin: 'com.android.library'

android {
compileSdkVersion 30

compileSdkVersion 35
namespace "com.befovy.fijkplayer"
defaultConfig {
minSdkVersion 16
minSdkVersion flutter.minSdkVersion
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
Expand Down
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upgrade gradle version to 8.9

Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
2 changes: 1 addition & 1 deletion android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<manifest package="com.befovy.fijkplayer">
<manifest>

</manifest>
69 changes: 36 additions & 33 deletions android/src/main/java/com/befovy/fijkplayer/FijkPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;
//import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.view.TextureRegistry;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;

Expand All @@ -81,7 +81,7 @@ public class FijkPlugin implements MethodCallHandler, FlutterPlugin, ActivityAwa

private WeakReference<Activity> mActivity;
private WeakReference<Context> mContext;
private Registrar mRegistrar;
//private Registrar mRegistrar;
private FlutterPluginBinding mBinding;

// Count of playable players
Expand All @@ -100,18 +100,17 @@ public class FijkPlugin implements MethodCallHandler, FlutterPlugin, ActivityAwa
/**
* Plugin registration.
*/
@SuppressWarnings("unused")
public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "befovy.com/fijk");
FijkPlugin plugin = new FijkPlugin();
plugin.initWithRegistrar(registrar);
channel.setMethodCallHandler(plugin);

final FijkPlayer player = new FijkPlayer(plugin, true);
player.setupSurface();
player.release();
}

// @SuppressWarnings("unused")
// public static void registerWith(Registrar registrar) {
// final MethodChannel channel = new MethodChannel(registrar.messenger(), "befovy.com/fijk");
// FijkPlugin plugin = new FijkPlugin();
// plugin.initWithRegistrar(registrar);
// channel.setMethodCallHandler(plugin);
//
// final FijkPlayer player = new FijkPlayer(plugin, true);
// player.setupSurface();
// player.release();
// }
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
final MethodChannel channel = new MethodChannel(binding.getBinaryMessenger(), "befovy.com/fijk");
Expand Down Expand Up @@ -167,9 +166,10 @@ public void onDetachedFromActivity() {
public TextureRegistry.SurfaceTextureEntry createSurfaceEntry() {
if (mBinding != null) {
return mBinding.getTextureRegistry().createSurfaceTexture();
} else if (mRegistrar != null) {
return mRegistrar.textures().createSurfaceTexture();
}
// else if (mRegistrar != null) {
// return mRegistrar.textures().createSurfaceTexture();
// }
return null;
}

Expand All @@ -178,9 +178,10 @@ public TextureRegistry.SurfaceTextureEntry createSurfaceEntry() {
public BinaryMessenger messenger() {
if (mBinding != null) {
return mBinding.getBinaryMessenger();
} else if (mRegistrar != null) {
return mRegistrar.messenger();
}
// else if (mRegistrar != null) {
// return mRegistrar.messenger();
// }
return null;
}

Expand All @@ -195,9 +196,10 @@ public Context context() {

@Nullable
private Activity activity() {
if (mRegistrar != null) {
return mRegistrar.activity();
} else if (mActivity != null) {
// if (mRegistrar != null) {
// return mRegistrar.activity();
// }
if (mActivity != null) {
return mActivity.get();
} else {
return null;
Expand All @@ -215,22 +217,23 @@ public String lookupKeyForAsset(@NonNull String asset, @Nullable String packageN
//noinspection ConstantConditions
path = mBinding.getFlutterAssets().getAssetFilePathByName(asset, packageName);
}
} else if (mRegistrar != null) {
if (TextUtils.isEmpty(packageName)) {
path = mRegistrar.lookupKeyForAsset(asset);
} else {
path = mRegistrar.lookupKeyForAsset(asset, packageName);
}
}
// else if (mRegistrar != null) {
// if (TextUtils.isEmpty(packageName)) {
// path = mRegistrar.lookupKeyForAsset(asset);
// } else {
// path = mRegistrar.lookupKeyForAsset(asset, packageName);
// }
// }
return path;
}


private void initWithRegistrar(@NonNull Registrar registrar) {
mRegistrar = registrar;
mContext = new WeakReference<>(registrar.activeContext());
init(registrar.messenger());
}
// private void initWithRegistrar(@NonNull Registrar registrar) {
// mRegistrar = registrar;
// mContext = new WeakReference<>(registrar.activeContext());
// init(registrar.messenger());
// }

private void initWithBinding(@NonNull FlutterPluginBinding binding) {
mBinding = binding;
Expand Down Expand Up @@ -528,7 +531,7 @@ private void setScreenBrightness(float brightness) {
}

@TargetApi(26)
@SuppressWarnings("deprecation")
// @SuppressWarnings("deprecation")
private void requestAudioFocus() {
AudioManager audioManager = audioManager();
if (audioManager == null)
Expand Down
34 changes: 29 additions & 5 deletions example/android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')

Expand All @@ -22,25 +28,32 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
//apply plugin: 'com.android.application'
//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 33
compileSdkVersion 35
namespace "com.befovy.fijkplayer.demo"

defaultConfig {
applicationId "com.befovy.fijkplayer.demo"
minSdkVersion 16
targetSdkVersion 33
minSdkVersion flutter.minSdkVersion
targetSdkVersion 35
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

ndk {
abiFilters 'arm64-v8a'
}
}


aaptOptions {
noCompress '.flv', '.mp4'
}


buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release` works.
Expand All @@ -49,6 +62,17 @@ android {
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}


applicationVariants.all { variant ->
variant.outputs.all {
def appName = "fijkplayer_example"
def buildType = variant.buildType.name
def versionName = variant.versionName
outputFileName = "${appName}-${versionName}-${buildType}.apk"
println(" L Terminal Run : cd " + rootProject.buildDir + "/app/outputs/apk/${buildType}/${outputFileName}")
}
}
}

flutter {
Expand Down
3 changes: 1 addition & 2 deletions example/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.fijkplayer.demo">
xmlns:tools="http://schemas.android.com/tools">


<!-- io.flutter.app.FlutterApplication is an android.app.Application that
Expand Down
11 changes: 0 additions & 11 deletions example/android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,3 @@
buildscript {
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
}
}

allprojects {
repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion example/android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
33 changes: 22 additions & 11 deletions example/android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,17 +1,28 @@
rootProject.name = 'fijkplayer-android'

include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" // apply true
id "com.android.application" version "8.12.0" apply false
id "org.jetbrains.kotlin.android" version "2.2.0" apply false
}

rootProject.name = 'fijkplayer-android'

include ':app'
2 changes: 1 addition & 1 deletion example/lib/recent_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const List<MediaUrl> samples = [
title: "Protocol not found", url: "noprotocol://assets/butterfly.mp4"),
MediaUrl(
title: "rtsp test",
url: "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"),
url: "rtmp://ns8.indexforce.com/home/mystream"),
MediaUrl(
title: "Sample Video 360 * 240",
url:
Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name: fijkplayer_example
description: Demonstrates how to use the fijkplayer plugin.
publish_to: 'none'
version: 0.8.5
version: 0.11.3+2025120815
environment:
sdk: '>=2.12.0 <3.0.0'
sdk: ">=3.7.2 <4.0.0"

dependencies:
flutter:
Expand Down
6 changes: 3 additions & 3 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: fijkplayer
description: A Video Player Flutter plugin based on ijkplayer, support most popular protocols and codecs
version: 0.11.0
version: 0.11.3
homepage: https://fijkplayer.befovy.com
repository: https://github.com/befovy/fijkplayer
issue_tracker: https://github.com/befovy/fijkplayer/issues

environment:
sdk: ">=2.14.0 <4.0.0"
flutter: ">=1.12.0"
sdk: ">=3.7.2 <4.0.0"
flutter: ">=3.27.4"

dependencies:
flutter:
Expand Down