Skip to content

Commit

Permalink
feat(android): add probe by name
Browse files Browse the repository at this point in the history
  • Loading branch information
I-m-SuperMan authored and pingkai committed Aug 4, 2020
1 parent 150381d commit 95c2ad9
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,16 @@ private void changePlayState(PlayerStatus newState) {

@Override
public boolean isSupport(Options options) {
return true;
if (options == null) {
return false;
}

String name = options.get("name");
if ("ExoPlayer".equals(name)) {
return true;
}

return false;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,12 @@ public class NativeExternalPlayer {

@NativeUsed
public static boolean isSupport(Options options) {
//TODO 根据option判断
// CicadaExternalPlayer dummyPlayer = CicadaExternalPlayer.isSupportExternal(options);
// if (dummyPlayer != null) {
// return true;
// } else {
// return false;
// }

return true;
CicadaExternalPlayer dummyPlayer = CicadaExternalPlayer.isSupportExternal(options);
if (dummyPlayer != null) {
return true;
} else {
return false;
}
}

@NativeUsed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -374,11 +374,13 @@ bool JavaExternalPlayer::is_supported(const Cicada::options *opts) {
jobject jOption = JavaOptions::convertTo(mEnv, const_cast<Cicada::options *>(opts));
jboolean ret = mEnv->CallStaticBooleanMethod(gj_NativeExternalPlayer_Class,
gj_NativeExternalPlayer_isSupport, jOption);
mEnv->DeleteLocalRef(jOption);
if(jOption != nullptr) {
mEnv->DeleteLocalRef(jOption);
}
return (bool) ret;
}

JavaExternalPlayer::JavaExternalPlayer() {
JavaExternalPlayer::JavaExternalPlayer(const Cicada::options * opts) {
JniEnv Jenv;
JNIEnv *mEnv = Jenv.getEnv();

Expand All @@ -391,9 +393,11 @@ JavaExternalPlayer::JavaExternalPlayer() {
jExternalPlayer = mEnv->NewGlobalRef(tmpPlayer);
mEnv->DeleteLocalRef(tmpPlayer);

//TODO 参数设置
// jobject jOption = JavaOptions::convertTo(mEnv , );
mEnv->CallVoidMethod(jExternalPlayer, gj_NativeExternalPlayer_create, (long) this, nullptr);
jobject jOption = JavaOptions::convertTo(mEnv , const_cast<Cicada::options *>(opts));
mEnv->CallVoidMethod(jExternalPlayer, gj_NativeExternalPlayer_create, (long) this, jOption);
if(jOption != nullptr) {
mEnv->DeleteLocalRef(jOption);
}
}

JavaExternalPlayer::~JavaExternalPlayer() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public :


public:
JavaExternalPlayer();
JavaExternalPlayer(const Cicada::options * opts);

~JavaExternalPlayer() override;

Expand Down Expand Up @@ -217,25 +217,20 @@ public :

private:
ICicadaPlayer *clone() override {
return new JavaExternalPlayer();
return new JavaExternalPlayer(options);
}

explicit JavaExternalPlayer(int dummy) {
addPrototype(this);
}

int probeScore(const Cicada::options *opts) override {
if (opts) {
string name = opts->get("name");
if (!name.empty()) {
if (name == "JavaExternalPlayer") {
return Cicada::SUPPORT_MAX;
} else {
return Cicada::SUPPORT_NOT;
}
}
options = opts;
if (is_supported(opts)) {
return Cicada::SUPPORT_MAX;
} else {
return Cicada::SUPPORT_NOT;
}
return Cicada::SUPPORT_NOT;
}

static JavaExternalPlayer se;
Expand Down Expand Up @@ -274,7 +269,7 @@ public :
playerListener mPlayerListener{};
StreamInfo ** mStreamInfos{nullptr};
int mStreamCount{0};

const Cicada::options *options{nullptr};
private:
void releaseStreamInfo(StreamInfo *pInfo);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ void JavaOptions::init(JNIEnv *env) {
"()V");
gj_Options_set = env->GetMethodID(gj_Options_Class,
"set",
"(Ljava/lang/String;Ljava/lang/String;I)V");
"(Ljava/lang/String;Ljava/lang/String;I)Z");

}
}
Expand All @@ -47,7 +47,7 @@ jobject JavaOptions::convertTo(JNIEnv *pEnv, Cicada::options *options) {
for (auto &opt : opts) {
NewStringUTF key(pEnv, opt.first.c_str());
NewStringUTF value(pEnv, opt.second.c_str());
pEnv->CallVoidMethod(jOptions, gj_Options_set, key.getString(), value.getString(), 1);
pEnv->CallBooleanMethod(jOptions, gj_Options_set, key.getString(), value.getString(), 1);
}

return jOptions;
Expand Down

0 comments on commit 95c2ad9

Please sign in to comment.