Loading media/java/android/media/tv/tuner/Tuner.java +32 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.media.tv.tuner.frontend.ScanCallback; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerDescramblerRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; import android.media.tv.tunerresourcemanager.TunerResourceManager; Loading Loading @@ -256,6 +257,36 @@ public class Tuner implements AutoCloseable { mTunerResourceManager.registerClientProfile( profile, new HandlerExecutor(mHandler), mResourceListener, clientId); mClientId = clientId[0]; setFrontendInfoList(); setLnbIds(); } private void setFrontendInfoList() { List<Integer> ids = nativeGetFrontendIds(); if (ids == null) { return; } TunerFrontendInfo[] infos = new TunerFrontendInfo[ids.size()]; for (int i = 0; i < ids.size(); i++) { int id = ids.get(i); FrontendInfo frontendInfo = nativeGetFrontendInfo(id); if (frontendInfo == null) { continue; } TunerFrontendInfo tunerFrontendInfo = new TunerFrontendInfo( id, frontendInfo.getType(), frontendInfo.getExclusiveGroupId()); infos[i] = tunerFrontendInfo; } mTunerResourceManager.setFrontendInfoList(infos); } private void setLnbIds() { int[] ids = nativeGetLnbIds(); if (ids == null) { return; } mTunerResourceManager.setLnbInfoList(ids); } /** Loading Loading @@ -358,7 +389,7 @@ public class Tuner implements AutoCloseable { private native Filter nativeOpenFilter(int type, int subType, long bufferSize); private native TimeFilter nativeOpenTimeFilter(); private native List<Integer> nativeGetLnbIds(); private native int[] nativeGetLnbIds(); private native Lnb nativeOpenLnbByHandle(int handle); private native Lnb nativeOpenLnbByName(String name); Loading media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -390,7 +390,7 @@ public class TunerResourceManager { * <li>If no Lnb system can be granted, the API would return false. * <ul> * * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this request. * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this request. * * @param request {@link TunerLnbRequest} information of the current request. * @param lnbId a one-element array to return the granted Lnb id. Loading Loading @@ -479,7 +479,7 @@ public class TunerResourceManager { * * <p>Client must call this whenever it releases an Lnb. * * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this release. * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this release. * * @param lnbId the id of the released Tuner Lnb. */ Loading media/jni/android_media_tv_Tuner.cpp +13 −17 Original line number Diff line number Diff line Loading @@ -1079,29 +1079,26 @@ jobject JTuner::getFrontendInfo(int id) { maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps); } jobject JTuner::getLnbIds() { jintArray JTuner::getLnbIds() { ALOGD("JTuner::getLnbIds()"); mTuner->getLnbIds([&](Result, const hidl_vec<FrontendId>& lnbIds) { mLnbIds = lnbIds; Result res; hidl_vec<LnbId> lnbIds; mTuner->getLnbIds([&](Result r, const hidl_vec<LnbId>& ids) { lnbIds = ids; res = r; }); if (mLnbIds.size() == 0) { if (res != Result::SUCCESS || mLnbIds.size() == 0) { ALOGW("Lnb isn't available"); return NULL; } mLnbIds = lnbIds; JNIEnv *env = AndroidRuntime::getJNIEnv(); jclass arrayListClazz = env->FindClass("java/util/ArrayList"); jmethodID arrayListAdd = env->GetMethodID(arrayListClazz, "add", "(Ljava/lang/Object;)Z"); jobject obj = env->NewObject(arrayListClazz, env->GetMethodID(arrayListClazz, "<init>", "()V")); jclass integerClazz = env->FindClass("java/lang/Integer"); jmethodID intInit = env->GetMethodID(integerClazz, "<init>", "(I)V"); jintArray ids = env->NewIntArray(mLnbIds.size()); env->SetIntArrayRegion(ids, 0, mLnbIds.size(), reinterpret_cast<jint*>(&mLnbIds[0])); for (int i=0; i < mLnbIds.size(); i++) { jobject idObj = env->NewObject(integerClazz, intInit, mLnbIds[i]); env->CallBooleanMethod(obj, arrayListAdd, idObj); } return obj; return ids; } jobject JTuner::openLnbById(int id) { Loading Loading @@ -2405,7 +2402,7 @@ static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thi return tuner->getFrontendInfo(id); } static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) { static jintArray android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->getLnbIds(); } Loading Loading @@ -3415,8 +3412,7 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_open_filter }, { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;", (void *)android_media_tv_Tuner_open_time_filter }, { "nativeGetLnbIds", "()Ljava/util/List;", (void *)android_media_tv_Tuner_get_lnb_ids }, { "nativeGetLnbIds", "()[I", (void *)android_media_tv_Tuner_get_lnb_ids }, { "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;", (void *)android_media_tv_Tuner_open_lnb_by_handle }, { "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;", Loading media/jni/android_media_tv_Tuner.h +1 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ struct JTuner : public RefBase { int stopScan(); int setLnb(int id); int setLna(bool enable); jobject getLnbIds(); jintArray getLnbIds(); jobject openLnbById(int id); jobject openLnbByName(jstring name); jobject openFilter(DemuxFilterType type, int bufferSize); Loading Loading
media/java/android/media/tv/tuner/Tuner.java +32 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.media.tv.tuner.frontend.ScanCallback; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerDescramblerRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; import android.media.tv.tunerresourcemanager.TunerResourceManager; Loading Loading @@ -256,6 +257,36 @@ public class Tuner implements AutoCloseable { mTunerResourceManager.registerClientProfile( profile, new HandlerExecutor(mHandler), mResourceListener, clientId); mClientId = clientId[0]; setFrontendInfoList(); setLnbIds(); } private void setFrontendInfoList() { List<Integer> ids = nativeGetFrontendIds(); if (ids == null) { return; } TunerFrontendInfo[] infos = new TunerFrontendInfo[ids.size()]; for (int i = 0; i < ids.size(); i++) { int id = ids.get(i); FrontendInfo frontendInfo = nativeGetFrontendInfo(id); if (frontendInfo == null) { continue; } TunerFrontendInfo tunerFrontendInfo = new TunerFrontendInfo( id, frontendInfo.getType(), frontendInfo.getExclusiveGroupId()); infos[i] = tunerFrontendInfo; } mTunerResourceManager.setFrontendInfoList(infos); } private void setLnbIds() { int[] ids = nativeGetLnbIds(); if (ids == null) { return; } mTunerResourceManager.setLnbInfoList(ids); } /** Loading Loading @@ -358,7 +389,7 @@ public class Tuner implements AutoCloseable { private native Filter nativeOpenFilter(int type, int subType, long bufferSize); private native TimeFilter nativeOpenTimeFilter(); private native List<Integer> nativeGetLnbIds(); private native int[] nativeGetLnbIds(); private native Lnb nativeOpenLnbByHandle(int handle); private native Lnb nativeOpenLnbByName(String name); Loading
media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -390,7 +390,7 @@ public class TunerResourceManager { * <li>If no Lnb system can be granted, the API would return false. * <ul> * * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this request. * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this request. * * @param request {@link TunerLnbRequest} information of the current request. * @param lnbId a one-element array to return the granted Lnb id. Loading Loading @@ -479,7 +479,7 @@ public class TunerResourceManager { * * <p>Client must call this whenever it releases an Lnb. * * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this release. * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this release. * * @param lnbId the id of the released Tuner Lnb. */ Loading
media/jni/android_media_tv_Tuner.cpp +13 −17 Original line number Diff line number Diff line Loading @@ -1079,29 +1079,26 @@ jobject JTuner::getFrontendInfo(int id) { maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps); } jobject JTuner::getLnbIds() { jintArray JTuner::getLnbIds() { ALOGD("JTuner::getLnbIds()"); mTuner->getLnbIds([&](Result, const hidl_vec<FrontendId>& lnbIds) { mLnbIds = lnbIds; Result res; hidl_vec<LnbId> lnbIds; mTuner->getLnbIds([&](Result r, const hidl_vec<LnbId>& ids) { lnbIds = ids; res = r; }); if (mLnbIds.size() == 0) { if (res != Result::SUCCESS || mLnbIds.size() == 0) { ALOGW("Lnb isn't available"); return NULL; } mLnbIds = lnbIds; JNIEnv *env = AndroidRuntime::getJNIEnv(); jclass arrayListClazz = env->FindClass("java/util/ArrayList"); jmethodID arrayListAdd = env->GetMethodID(arrayListClazz, "add", "(Ljava/lang/Object;)Z"); jobject obj = env->NewObject(arrayListClazz, env->GetMethodID(arrayListClazz, "<init>", "()V")); jclass integerClazz = env->FindClass("java/lang/Integer"); jmethodID intInit = env->GetMethodID(integerClazz, "<init>", "(I)V"); jintArray ids = env->NewIntArray(mLnbIds.size()); env->SetIntArrayRegion(ids, 0, mLnbIds.size(), reinterpret_cast<jint*>(&mLnbIds[0])); for (int i=0; i < mLnbIds.size(); i++) { jobject idObj = env->NewObject(integerClazz, intInit, mLnbIds[i]); env->CallBooleanMethod(obj, arrayListAdd, idObj); } return obj; return ids; } jobject JTuner::openLnbById(int id) { Loading Loading @@ -2405,7 +2402,7 @@ static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thi return tuner->getFrontendInfo(id); } static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) { static jintArray android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->getLnbIds(); } Loading Loading @@ -3415,8 +3412,7 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_open_filter }, { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;", (void *)android_media_tv_Tuner_open_time_filter }, { "nativeGetLnbIds", "()Ljava/util/List;", (void *)android_media_tv_Tuner_get_lnb_ids }, { "nativeGetLnbIds", "()[I", (void *)android_media_tv_Tuner_get_lnb_ids }, { "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;", (void *)android_media_tv_Tuner_open_lnb_by_handle }, { "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;", Loading
media/jni/android_media_tv_Tuner.h +1 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ struct JTuner : public RefBase { int stopScan(); int setLnb(int id); int setLna(bool enable); jobject getLnbIds(); jintArray getLnbIds(); jobject openLnbById(int id); jobject openLnbByName(jstring name); jobject openFilter(DemuxFilterType type, int bufferSize); Loading