void AndroidCameraPrivate::setFocusAreas(const QList<QRect> &areas) { if (QtAndroidPrivate::androidSdkVersion() < 14) return; QMutexLocker parametersLocker(&m_parametersMutex); if (!m_parameters.isValid()) return; QJNIObjectPrivate list; if (!areas.isEmpty()) { QJNIEnvironmentPrivate env; QJNIObjectPrivate arrayList("java/util/ArrayList", "(I)V", areas.size()); for (int i = 0; i < areas.size(); ++i) { arrayList.callMethod<jboolean>("add", "(Ljava/lang/Object;)Z", rectToArea(areas.at(i)).object()); exceptionCheckAndClear(env); } list = arrayList; } m_parameters.callMethod<void>("setFocusAreas", "(Ljava/util/List;)V", list.object()); applyParameters(); }
/* Conversion --------------------------------------------------------------- */ static ArrayList *array(LinkedList *list) { ArrayList *arr = arrayList(list->length); LinkedNode *node = list->front; while(node) { arr->append(arr, node->value); node = node->next; } return arr; }