diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..1bb2735f --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: https://paypal.me/janrabe/5 \ No newline at end of file diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 00000000..c8ec0e8b --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,26 @@ +name: Android CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 22347250..00000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: android -dist: trusty -sudo: required -jdk: - - openjdk11 -android: - components: - - tools - - build-tools-31.0.3 - - android-31 -before_script: - - curl https://kaltura.github.io/fe-tools/android/license.sh | sh -script: - - ./gradlew vrlib:build -after_failure: - - cat vrlib/build/outputs/lint-results-debug.xml -notifications: - email: - recipients: - - noam.tamim@kaltura.com - - gilad.nadav@kaltura.com - - gourav.saxena@kaltura.com - on_success: always - on_failure: always diff --git a/README.md b/README.md index 633a95b1..0158e1a4 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@ -[![CI Status](https://api.travis-ci.org/kaltura/MD360Player4Android.svg?branch=develop)](https://travis-ci.com/github/kaltura/MD360Player4Android) -[![Download](https://img.shields.io/maven-central/v/com.kaltura.playkit/md360player?label=Download)](https://search.maven.org/artifact/com.kaltura.playkit/md360player) -[![License](https://img.shields.io/badge/license-AGPLv3-black.svg)](https://github.com/kaltura/playkit-android/blob/master/LICENSE) -![Android](https://img.shields.io/badge/platform-android-green.svg) +# MD360Player4Android [![Android CI](https://github.com/kibotu/MD360Player4Android/actions/workflows/android.yml/badge.svg)](https://github.com/kibotu/MD360Player4Android/actions/workflows/android.yml) [![](https://jitpack.io/v/kibotu/MD360Player4Android.svg)](https://jitpack.io/#kibotu/MD360Player4Android) [![API](https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=21) [![Gradle Version](https://img.shields.io/badge/gradle-8.11.1-green.svg)](https://docs.gradle.org/current/release-notes) [![Kotlin](https://img.shields.io/badge/kotlin-2.1.0-green.svg)](https://kotlinlang.org/) -# MD360Player4Android It is a lite library to render 360 degree panorama video for Android. + [![](https://jitpack.io/v/ashqal/MD360Player4Android.svg)](https://jitpack.io/#ashqal/MD360Player4Android) ## Preview @@ -21,24 +18,23 @@ It is a lite library to render 360 degree panorama video for Android. * [Working with vlc](https://github.com/ashqal/MD-vlc-sample) ## Gradle -```java -allprojects { +```groovy +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { - ... - maven { url "https://jitpack.io" } + mavenCentral() + maven { url 'https://jitpack.io' } } } -``` -```java dependencies { - compile 'com.github.ashqal:MD360Player4Android:2.5.0' + implementation 'com.github.kibotu:NumberProgressBar:Tag' } ``` ## USAGE ### Using with GLSurfaceView **STEP1** Define `GLSurfaceView` in the layout xml. -```java +```xml Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4c72f50d..c07764b1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,9 @@ - + - - - + + + - + - - - - - + + + + + diff --git a/app/src/main/java/com/asha/md360player4android/BitmapPlayerActivity.java b/app/src/main/java/com/asha/md360player4android/BitmapPlayerActivity.java index 53a90fb1..9f1a3b21 100644 --- a/app/src/main/java/com/asha/md360player4android/BitmapPlayerActivity.java +++ b/app/src/main/java/com/asha/md360player4android/BitmapPlayerActivity.java @@ -62,7 +62,7 @@ public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override - public void onBitmapFailed(Drawable errorDrawable) { + public void onBitmapFailed(Exception e, Drawable errorDrawable) { } @@ -72,7 +72,7 @@ public void onPrepareLoad(Drawable placeHolderDrawable) { } }; Log.d(TAG, "load image with max texture size:" + callback.getMaxTextureSize()); - Picasso.with(getApplicationContext()) + Picasso.get() .load(uri) .resize(callback.getMaxTextureSize(),callback.getMaxTextureSize()) .onlyScaleDown() diff --git a/app/src/main/java/com/asha/md360player4android/CubemapPlayerActivity.java b/app/src/main/java/com/asha/md360player4android/CubemapPlayerActivity.java index 0b0e632a..f94bc523 100644 --- a/app/src/main/java/com/asha/md360player4android/CubemapPlayerActivity.java +++ b/app/src/main/java/com/asha/md360player4android/CubemapPlayerActivity.java @@ -64,7 +64,7 @@ public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override - public void onBitmapFailed(Drawable errorDrawable) { + public void onBitmapFailed(Exception e, Drawable errorDrawable) { } @@ -75,7 +75,7 @@ public void onPrepareLoad(Drawable placeHolderDrawable) { }; Log.d(TAG, "load image with max texture size:" + callback.getMaxTextureSize()); - Picasso.with(getApplicationContext()) + Picasso.get() .load(uri) .resize(callback.getMaxTextureSize(),callback.getMaxTextureSize()) .onlyScaleDown() diff --git a/app/src/main/java/com/asha/md360player4android/CustomProjectionFactory.java b/app/src/main/java/com/asha/md360player4android/CustomProjectionFactory.java index 580c06b9..f5866d54 100644 --- a/app/src/main/java/com/asha/md360player4android/CustomProjectionFactory.java +++ b/app/src/main/java/com/asha/md360player4android/CustomProjectionFactory.java @@ -15,10 +15,11 @@ public class CustomProjectionFactory implements IMDProjectionFactory { @Override public AbsProjectionStrategy createStrategy(int mode) { - switch (mode){ + switch (mode) { case CUSTOM_PROJECTION_FISH_EYE_RADIUS_VERTICAL: return new MultiFishEyeProjection(0.745f, MDDirection.VERTICAL); - default:return null; + default: + return null; } } } diff --git a/app/src/main/java/com/asha/md360player4android/IjkPlayerDemoActivity.java b/app/src/main/java/com/asha/md360player4android/IjkPlayerDemoActivity.java index ddb6aa30..8773aff9 100644 --- a/app/src/main/java/com/asha/md360player4android/IjkPlayerDemoActivity.java +++ b/app/src/main/java/com/asha/md360player4android/IjkPlayerDemoActivity.java @@ -13,7 +13,6 @@ import android.view.Window; import android.view.WindowManager; -import tv.danmaku.ijk.media.player.IMediaPlayer; /** @@ -24,7 +23,7 @@ public class IjkPlayerDemoActivity extends Activity implements TextureView.Surfa private Surface surface; - private MediaPlayerWrapper mMediaPlayerWrapper = new MediaPlayerWrapper(); +// private MediaPlayerWrapper mMediaPlayerWrapper = new MediaPlayerWrapper(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -38,21 +37,21 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_ijkdemo); - mMediaPlayerWrapper.init(); - mMediaPlayerWrapper.setPreparedListener(new IMediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(IMediaPlayer mp) { - cancelBusy(); - } - }); +// mMediaPlayerWrapper.init(); +// mMediaPlayerWrapper.setPreparedListener(new IMediaPlayer.OnPreparedListener() { +// @Override +// public void onPrepared(IMediaPlayer mp) { +// cancelBusy(); +// } +// }); TextureView textureView = (TextureView) findViewById(R.id.video_view); textureView.setSurfaceTextureListener(this); Uri uri = getUri(); if (uri != null){ - mMediaPlayerWrapper.openRemoteFile(uri.toString()); - mMediaPlayerWrapper.prepare(); +// mMediaPlayerWrapper.openRemoteFile(uri.toString()); +// mMediaPlayerWrapper.prepare(); } } @@ -74,7 +73,7 @@ protected Uri getUri() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { surface = new Surface(surfaceTexture); - mMediaPlayerWrapper.setSurface(surface); +// mMediaPlayerWrapper.setSurface(surface); } @@ -85,7 +84,7 @@ public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int h @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { - mMediaPlayerWrapper.setSurface(null); +// mMediaPlayerWrapper.setSurface(null); this.surface = null; return true; } @@ -98,19 +97,19 @@ public void onSurfaceTextureUpdated(SurfaceTexture surface) { @Override protected void onDestroy() { super.onDestroy(); - mMediaPlayerWrapper.destroy(); +// mMediaPlayerWrapper.destroy(); } @Override protected void onPause() { super.onPause(); - mMediaPlayerWrapper.pause(); +// mMediaPlayerWrapper.pause(); } @Override protected void onResume() { super.onResume(); - mMediaPlayerWrapper.resume(); +// mMediaPlayerWrapper.resume(); } public void cancelBusy(){ diff --git a/app/src/main/java/com/asha/md360player4android/MD360PlayerActivity.java b/app/src/main/java/com/asha/md360player4android/MD360PlayerActivity.java index 83ae84f7..e9b1185b 100644 --- a/app/src/main/java/com/asha/md360player4android/MD360PlayerActivity.java +++ b/app/src/main/java/com/asha/md360player4android/MD360PlayerActivity.java @@ -557,7 +557,7 @@ public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override - public void onBitmapFailed(Drawable errorDrawable) { + public void onBitmapFailed(Exception e, Drawable errorDrawable) { targetMap.remove(uri); } @@ -567,7 +567,7 @@ public void onPrepareLoad(Drawable placeHolderDrawable) { } }; targetMap.put(uri, target); - Picasso.with(getApplicationContext()).load(uri).resize(callback.getMaxTextureSize(),callback.getMaxTextureSize()).onlyScaleDown().centerInside().memoryPolicy(NO_CACHE, NO_STORE).into(target); + Picasso.get().load(uri).resize(callback.getMaxTextureSize(),callback.getMaxTextureSize()).onlyScaleDown().centerInside().memoryPolicy(NO_CACHE, NO_STORE).into(target); } } } \ No newline at end of file diff --git a/app/src/main/java/com/asha/md360player4android/MediaPlayerWrapper.java b/app/src/main/java/com/asha/md360player4android/MediaPlayerWrapper.java index a86cec60..c8fa88e2 100644 --- a/app/src/main/java/com/asha/md360player4android/MediaPlayerWrapper.java +++ b/app/src/main/java/com/asha/md360player4android/MediaPlayerWrapper.java @@ -1,157 +1,157 @@ -package com.asha.md360player4android; - -import android.content.Context; -import android.content.res.AssetManager; -import android.view.Surface; - -import java.io.IOException; -import java.io.InputStream; - -import tv.danmaku.ijk.media.player.IMediaPlayer; -import tv.danmaku.ijk.media.player.IjkMediaPlayer; -import tv.danmaku.ijk.media.player.misc.IMediaDataSource; - -/** - * Created by hzqiujiadi on 16/4/5. - * hzqiujiadi ashqalcn@gmail.com - * - * http://developer.android.com/intl/zh-cn/reference/android/media/MediaPlayer.html - * status - */ -public class MediaPlayerWrapper implements IMediaPlayer.OnPreparedListener { - protected IMediaPlayer mPlayer; - private IjkMediaPlayer.OnPreparedListener mPreparedListener; - private static final int STATUS_IDLE = 0; - private static final int STATUS_PREPARING = 1; - private static final int STATUS_PREPARED = 2; - private static final int STATUS_STARTED = 3; - private static final int STATUS_PAUSED = 4; - private static final int STATUS_STOPPED = 5; - private int mStatus = STATUS_IDLE; - - public void init(){ - mStatus = STATUS_IDLE; - mPlayer = new IjkMediaPlayer(); - mPlayer.setOnPreparedListener(this); - mPlayer.setOnInfoListener(new IMediaPlayer.OnInfoListener() { - @Override - public boolean onInfo(IMediaPlayer mp, int what, int extra) { - return false; - } - }); - - enableHardwareDecoding(); - } - - private void enableHardwareDecoding(){ - if (mPlayer instanceof IjkMediaPlayer){ - IjkMediaPlayer player = (IjkMediaPlayer) mPlayer; - player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1); - player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1); - player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32); - player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 60); - player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 0); - player.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48); - } - } - - public void setSurface(Surface surface){ - if (getPlayer() != null){ - getPlayer().setSurface(surface); - } - } - - public void openRemoteFile(String url){ - try { - mPlayer.setDataSource(url); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void openAssetFile(Context context, String assetPath) { - try { - AssetManager am = context.getResources().getAssets(); - final InputStream is = am.open(assetPath); - mPlayer.setDataSource(new IMediaDataSource() { - @Override - public int readAt(long position, byte[] buffer, int offset, int size) throws IOException { - return is.read(buffer, offset, size); - } - - @Override - public long getSize() throws IOException { - return is.available(); - } - - @Override - public void close() throws IOException { - is.close(); - } - }); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public IMediaPlayer getPlayer() { - return mPlayer; - } - - public void prepare() { - if (mPlayer == null) return; - if (mStatus == STATUS_IDLE || mStatus == STATUS_STOPPED){ - mPlayer.prepareAsync(); - mStatus = STATUS_PREPARING; - } - } - - public void stop(){ - if (mPlayer == null) return; - if (mStatus == STATUS_STARTED || mStatus == STATUS_PAUSED){ - mPlayer.stop(); - mStatus = STATUS_STOPPED; - } - } - - public void pause(){ - if (mPlayer == null) return; - if (mPlayer.isPlaying() && mStatus == STATUS_STARTED) { - mPlayer.pause(); - mStatus = STATUS_PAUSED; - } - } - - private void start(){ - if (mPlayer == null) return; - if (mStatus == STATUS_PREPARED || mStatus == STATUS_PAUSED){ - mPlayer.start(); - mStatus = STATUS_STARTED; - } - - } - - public void setPreparedListener(IMediaPlayer.OnPreparedListener mPreparedListener) { - this.mPreparedListener = mPreparedListener; - } - - @Override - public void onPrepared(IMediaPlayer mp) { - mStatus = STATUS_PREPARED; - start(); - if (mPreparedListener != null) mPreparedListener.onPrepared(mp); - } - - public void resume() { - start(); - } - - public void destroy() { - stop(); - if (mPlayer != null) { - mPlayer.setSurface(null); - mPlayer.release(); - } - mPlayer = null; - } -} +//package com.asha.md360player4android; +// +//import android.content.Context; +//import android.content.res.AssetManager; +//import android.view.Surface; +// +//import java.io.IOException; +//import java.io.InputStream; +// +//import tv.danmaku.ijk.media.player.IMediaPlayer; +//import tv.danmaku.ijk.media.player.IjkMediaPlayer; +//import tv.danmaku.ijk.media.player.misc.IMediaDataSource; +// +///** +// * Created by hzqiujiadi on 16/4/5. +// * hzqiujiadi ashqalcn@gmail.com +// *

+// * http://developer.android.com/intl/zh-cn/reference/android/media/MediaPlayer.html +// * status +// */ +//public class MediaPlayerWrapper implements IMediaPlayer.OnPreparedListener { +// protected IMediaPlayer mPlayer; +// private IjkMediaPlayer.OnPreparedListener mPreparedListener; +// private static final int STATUS_IDLE = 0; +// private static final int STATUS_PREPARING = 1; +// private static final int STATUS_PREPARED = 2; +// private static final int STATUS_STARTED = 3; +// private static final int STATUS_PAUSED = 4; +// private static final int STATUS_STOPPED = 5; +// private int mStatus = STATUS_IDLE; +// +// public void init() { +// mStatus = STATUS_IDLE; +// mPlayer = new IjkMediaPlayer(); +// mPlayer.setOnPreparedListener(this); +// mPlayer.setOnInfoListener(new IMediaPlayer.OnInfoListener() { +// @Override +// public boolean onInfo(IMediaPlayer mp, int what, int extra) { +// return false; +// } +// }); +// +// enableHardwareDecoding(); +// } +// +// private void enableHardwareDecoding() { +// if (mPlayer instanceof IjkMediaPlayer) { +// IjkMediaPlayer player = (IjkMediaPlayer) mPlayer; +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1); +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1); +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32); +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 60); +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 0); +// player.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48); +// } +// } +// +// public void setSurface(Surface surface) { +// if (getPlayer() != null) { +// getPlayer().setSurface(surface); +// } +// } +// +// public void openRemoteFile(String url) { +// try { +// mPlayer.setDataSource(url); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// public void openAssetFile(Context context, String assetPath) { +// try { +// AssetManager am = context.getResources().getAssets(); +// final InputStream is = am.open(assetPath); +// mPlayer.setDataSource(new IMediaDataSource() { +// @Override +// public int readAt(long position, byte[] buffer, int offset, int size) throws IOException { +// return is.read(buffer, offset, size); +// } +// +// @Override +// public long getSize() throws IOException { +// return is.available(); +// } +// +// @Override +// public void close() throws IOException { +// is.close(); +// } +// }); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// public IMediaPlayer getPlayer() { +// return mPlayer; +// } +// +// public void prepare() { +// if (mPlayer == null) return; +// if (mStatus == STATUS_IDLE || mStatus == STATUS_STOPPED) { +// mPlayer.prepareAsync(); +// mStatus = STATUS_PREPARING; +// } +// } +// +// public void stop() { +// if (mPlayer == null) return; +// if (mStatus == STATUS_STARTED || mStatus == STATUS_PAUSED) { +// mPlayer.stop(); +// mStatus = STATUS_STOPPED; +// } +// } +// +// public void pause() { +// if (mPlayer == null) return; +// if (mPlayer.isPlaying() && mStatus == STATUS_STARTED) { +// mPlayer.pause(); +// mStatus = STATUS_PAUSED; +// } +// } +// +// private void start() { +// if (mPlayer == null) return; +// if (mStatus == STATUS_PREPARED || mStatus == STATUS_PAUSED) { +// mPlayer.start(); +// mStatus = STATUS_STARTED; +// } +// +// } +// +// public void setPreparedListener(IMediaPlayer.OnPreparedListener mPreparedListener) { +// this.mPreparedListener = mPreparedListener; +// } +// +// @Override +// public void onPrepared(IMediaPlayer mp) { +// mStatus = STATUS_PREPARED; +// start(); +// if (mPreparedListener != null) mPreparedListener.onPrepared(mp); +// } +// +// public void resume() { +// start(); +// } +// +// public void destroy() { +// stop(); +// if (mPlayer != null) { +// mPlayer.setSurface(null); +// mPlayer.release(); +// } +// mPlayer = null; +// } +//} diff --git a/app/src/main/java/com/asha/md360player4android/RecyclerViewActivity.java b/app/src/main/java/com/asha/md360player4android/RecyclerViewActivity.java index 550675dd..856b12b2 100644 --- a/app/src/main/java/com/asha/md360player4android/RecyclerViewActivity.java +++ b/app/src/main/java/com/asha/md360player4android/RecyclerViewActivity.java @@ -162,7 +162,7 @@ public void onProvideBitmap(final MD360BitmapTexture.Callback callback) { return; } - Picasso.with(itemView.getContext()).load(model.uri).into(new Target() { + Picasso.get().load(model.uri).into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { vrlib.onTextureResize(bitmap.getWidth(), bitmap.getHeight()); @@ -170,7 +170,7 @@ public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override - public void onBitmapFailed(Drawable errorDrawable) { + public void onBitmapFailed(Exception e, Drawable errorDrawable) { } diff --git a/app/src/main/java/com/asha/md360player4android/SpinnerHelper.java b/app/src/main/java/com/asha/md360player4android/SpinnerHelper.java index 3a10ea4b..4637d296 100644 --- a/app/src/main/java/com/asha/md360player4android/SpinnerHelper.java +++ b/app/src/main/java/com/asha/md360player4android/SpinnerHelper.java @@ -18,7 +18,7 @@ public class SpinnerHelper { private ClickHandler clickHandler; private int defaultKey; - public interface ClickHandler{ + public interface ClickHandler { void onSpinnerClicked(int index, int key, String value); } @@ -26,30 +26,30 @@ public SpinnerHelper(Activity activity) { this.activity = activity; } - public SpinnerHelper setDefault(int key){ + public SpinnerHelper setDefault(int key) { defaultKey = key; return this; } - public SpinnerHelper setData(SparseArray data){ + public SpinnerHelper setData(SparseArray data) { this.data = data; return this; } - public SpinnerHelper setClickHandler(ClickHandler clickHandler){ + public SpinnerHelper setClickHandler(ClickHandler clickHandler) { this.clickHandler = clickHandler; return this; } - public void init(int id){ - if (data == null){ + public void init(int id) { + if (data == null) { return; } Spinner spinner = (Spinner) activity.findViewById(id); ArrayAdapter adapter = new ArrayAdapter<>(activity, R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - for (int i = 0; i < data.size(); i++){ + for (int i = 0; i < data.size(); i++) { String value = data.valueAt(i); adapter.add(value); } @@ -63,8 +63,8 @@ public void init(int id){ public void onItemSelected(AdapterView parent, View view, int position, long id) { int key = data.keyAt(position); String value = data.valueAt(position); - if (clickHandler != null){ - clickHandler.onSpinnerClicked(position,key,value); + if (clickHandler != null) { + clickHandler.onSpinnerClicked(position, key, value); } } @@ -75,7 +75,7 @@ public void onNothingSelected(AdapterView parent) { }); } - public static SpinnerHelper with(Activity activity){ + public static SpinnerHelper with(Activity activity) { return new SpinnerHelper(activity); } } diff --git a/app/src/main/java/com/asha/md360player4android/VRLibManager.java b/app/src/main/java/com/asha/md360player4android/VRLibManager.java index d9212a7d..5b087798 100644 --- a/app/src/main/java/com/asha/md360player4android/VRLibManager.java +++ b/app/src/main/java/com/asha/md360player4android/VRLibManager.java @@ -28,7 +28,7 @@ public VRLibManager(Context context) { } public MDVRLibrary create(MDVRLibrary.IBitmapProvider provider, GLTextureView textureView) { - MDVRLibrary lib = MDVRLibrary.with(context) + MDVRLibrary lib = MDVRLibrary.with(context) .asBitmap(provider) .pinchConfig(new MDPinchConfig().setMin(0.8f).setSensitivity(1).setDefaultValue(0.8f)) .touchSensitivity(2) diff --git a/app/src/main/java/com/asha/md360player4android/VideoPlayerActivity.java b/app/src/main/java/com/asha/md360player4android/VideoPlayerActivity.java index d2746afe..8efc4ddd 100644 --- a/app/src/main/java/com/asha/md360player4android/VideoPlayerActivity.java +++ b/app/src/main/java/com/asha/md360player4android/VideoPlayerActivity.java @@ -13,7 +13,6 @@ import com.asha.vrlib.model.BarrelDistortionConfig; import com.asha.vrlib.model.MDPinchConfig; -import tv.danmaku.ijk.media.player.IMediaPlayer; /** * Created by hzqiujiadi on 16/4/5. @@ -22,55 +21,55 @@ public class VideoPlayerActivity extends MD360PlayerActivity { private static final String TAG = "VideoPlayerActivity"; - private MediaPlayerWrapper mMediaPlayerWrapper = new MediaPlayerWrapper(); +// private MediaPlayerWrapper mMediaPlayerWrapper = new MediaPlayerWrapper(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mMediaPlayerWrapper.init(); - mMediaPlayerWrapper.setPreparedListener(new IMediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(IMediaPlayer mp) { - cancelBusy(); - if (getVRLibrary() != null){ - getVRLibrary().notifyPlayerChanged(); - } - } - }); - - mMediaPlayerWrapper.getPlayer().setOnErrorListener(new IMediaPlayer.OnErrorListener() { - @Override - public boolean onError(IMediaPlayer mp, int what, int extra) { - String error = String.format("Play Error what=%d extra=%d",what,extra); - Toast.makeText(VideoPlayerActivity.this, error, Toast.LENGTH_SHORT).show(); - return true; - } - }); - - mMediaPlayerWrapper.getPlayer().setOnVideoSizeChangedListener(new IMediaPlayer.OnVideoSizeChangedListener() { - @Override - public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den) { - getVRLibrary().onTextureResize(width, height); - } - }); - - Uri uri = getUri(); - if (uri != null){ - mMediaPlayerWrapper.openRemoteFile(uri.toString()); - mMediaPlayerWrapper.prepare(); - } - - findViewById(R.id.control_next).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mMediaPlayerWrapper.pause(); - mMediaPlayerWrapper.destroy(); - mMediaPlayerWrapper.init(); - mMediaPlayerWrapper.openRemoteFile(DemoActivity.sPath + "video_31b451b7ca49710719b19d22e19d9e60.mp4"); - mMediaPlayerWrapper.prepare(); - } - }); +// mMediaPlayerWrapper.init(); +// mMediaPlayerWrapper.setPreparedListener(new IMediaPlayer.OnPreparedListener() { +// @Override +// public void onPrepared(IMediaPlayer mp) { +// cancelBusy(); +// if (getVRLibrary() != null) { +// getVRLibrary().notifyPlayerChanged(); +// } +// } +// }); + +// mMediaPlayerWrapper.getPlayer().setOnErrorListener(new IMediaPlayer.OnErrorListener() { +// @Override +// public boolean onError(IMediaPlayer mp, int what, int extra) { +// String error = String.format("Play Error what=%d extra=%d", what, extra); +// Toast.makeText(VideoPlayerActivity.this, error, Toast.LENGTH_SHORT).show(); +// return true; +// } +// }); +// +// mMediaPlayerWrapper.getPlayer().setOnVideoSizeChangedListener(new IMediaPlayer.OnVideoSizeChangedListener() { +// @Override +// public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den) { +// getVRLibrary().onTextureResize(width, height); +// } +// }); + +// Uri uri = getUri(); +// if (uri != null) { +// mMediaPlayerWrapper.openRemoteFile(uri.toString()); +// mMediaPlayerWrapper.prepare(); +// } +// +// findViewById(R.id.control_next).setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// mMediaPlayerWrapper.pause(); +// mMediaPlayerWrapper.destroy(); +// mMediaPlayerWrapper.init(); +// mMediaPlayerWrapper.openRemoteFile(DemoActivity.sPath + "video_31b451b7ca49710719b19d22e19d9e60.mp4"); +// mMediaPlayerWrapper.prepare(); +// } +// }); } @@ -82,7 +81,7 @@ protected MDVRLibrary createVRLibrary() { .asVideo(new MDVRLibrary.IOnSurfaceReadyCallback() { @Override public void onSurfaceReady(Surface surface) { - mMediaPlayerWrapper.setSurface(surface); +// mMediaPlayerWrapper.setSurface(surface); } }) .ifNotSupport(new MDVRLibrary.INotSupportCallback() { @@ -109,18 +108,18 @@ public MD360Director createDirector(int index) { @Override protected void onDestroy() { super.onDestroy(); - mMediaPlayerWrapper.destroy(); +// mMediaPlayerWrapper.destroy(); } @Override protected void onPause() { super.onPause(); - mMediaPlayerWrapper.pause(); +// mMediaPlayerWrapper.pause(); } @Override protected void onResume() { super.onResume(); - mMediaPlayerWrapper.resume(); +// mMediaPlayerWrapper.resume(); } } diff --git a/app/src/main/res/layout/activity_demo.xml b/app/src/main/res/layout/activity_demo.xml index b52495ab..c9854be3 100644 --- a/app/src/main/res/layout/activity_demo.xml +++ b/app/src/main/res/layout/activity_demo.xml @@ -1,7 +1,10 @@ - + + android:layout_height="wrap_content" /> +