Correct android issues for libdash and viper 95/20095/10
authorAngelo Mantellini <[email protected]>
Wed, 12 Jun 2019 16:02:19 +0000 (18:02 +0200)
committerAngelo Mantellini <[email protected]>
Tue, 18 Jun 2019 12:50:29 +0000 (14:50 +0200)
Change-Id: Ia5b95bda6336b6544c881c416f852069662f5e3f
Signed-off-by: Angelo Mantellini <[email protected]>
13 files changed:
Input/ICNConnectionConsumerApi.cpp
Managers/MultimediaManager.cpp
UI/DASHPlayer.cpp
android/AndroidManifest.xml
android/gradle.properties
android/res/drawable-hdpi/icon.png [changed mode: 0755->0644]
android/res/drawable-ldpi/icon.png [changed mode: 0755->0644]
android/res/drawable-mdpi/icon.png [changed mode: 0755->0644]
android/src/io/fd/viper/ViperActivity.java [moved from android/src/org/player/viper/ViperActivity.java with 98% similarity]
libdash/CMakeLists.txt
main.cpp
qml/Viper/Options.qml
viper.pro

index c93e9ed..5933085 100644 (file)
@@ -160,8 +160,8 @@ int ICNConnectionConsumerApi::Read(uint8_t *data, size_t len)
     } else
     {
         memcpy(data, (char*)response.getPayload().data() + this->dataPos, response.getPayload().size() - this->dataPos);
-        int length = response.getPayload().size() - this->dataPos;
-       if (length == 0)
+        int length = response.getPayload().size() - this->dataPos;
+        if (length == 0)
         {
           this->res = false;
         }
index 81c5514..1bbb2c6 100644 (file)
@@ -112,7 +112,6 @@ bool    MultimediaManager::initICN(const std::string& url)
     {
         pos = pos + 1;
     }
-
     std::string downloadFile(this->downloadPath + url.substr(pos).c_str());
     FILE *fp;
     fp = fopen(downloadFile.c_str(), "w");
@@ -131,6 +130,7 @@ bool    MultimediaManager::initICN(const std::string& url)
     }
     fclose(fp);
     IMPD* mpd = this->manager->Open(const_cast<char*>(downloadFile.c_str()), url);
+    qDebug("downloadFile %s", downloadFile.c_str());
     remove(downloadFile.c_str());
     free(data);
     if(mpd == NULL)
@@ -143,11 +143,10 @@ bool    MultimediaManager::initICN(const std::string& url)
     this->mpdWrapper->updateMPD(mpd);
     for (size_t i = 0; i < this->managerObservers.size(); i++)
         this->managerObservers.at(i)->setMPDWrapper(this->mpdWrapper);
-    if( !strcmp(this->mpdWrapper->getType().c_str(), "static") )
+    if( this->mpdWrapper->getType().compare("static") )
     {
         delete icnConn;
     }
-
     LeaveCriticalSection(&this->monitorMutex);
     return true;
 }
index c53cbed..63debc1 100644 (file)
@@ -216,7 +216,7 @@ bool DASHPlayer::downloadMPD(const QString &adaptationLogic, bool icn)
 
         this->segmentDuration = this->mpdWrapper->onFirstDownloadMPD(this->gui);
         this->multimediaManager->setSegmentDuration(this->segmentDuration);
-        this->parametersAdaptation->segmentDuration = this->segmentDuration / 1000.0; //to have it in seconds 
+        this->parametersAdaptation->segmentDuration = this->segmentDuration / 1000.0; //to have it in seconds
         this->onSettingsChanged(0,0,0,0,0);
         int j =0;
         std::string temp = adaptationLogic.toStdString();
index aaac206..f8e00c3 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
-<manifest package="org.player.viper" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="7" android:installLocation="auto">
+<manifest package="io.fd.viper" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="9" android:installLocation="auto">
     <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="Viper" android:icon="@drawable/icon">
-        <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.player.viper.ViperActivity" android:label="Viper" android:screenOrientation="unspecified" android:launchMode="singleTop">
+        <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="io.fd.viper.ViperActivity" android:label="Viper" android:screenOrientation="unspecified" android:launchMode="singleTop">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>
@@ -69,7 +69,7 @@
 
     </application>
 
-    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23"/>
+    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26"/>
     <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
 
     <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
index 5582cc8..8527bca 100644 (file)
@@ -3,6 +3,6 @@
 # This file must *NOT* be checked into Version Control Systems,
 # as it contains information specific to your local configuration.
 
-androidBuildToolsVersion=23.0.2
-androidCompileSdkVersion=23
+androidBuildToolsVersion=28.0.3
+androidCompileSdkVersion=28
 buildDir=.build
old mode 100755 (executable)
new mode 100644 (file)
index ecd7fe9..d84d1df
Binary files a/android/res/drawable-hdpi/icon.png and b/android/res/drawable-hdpi/icon.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 8a4388e..d84d1df
Binary files a/android/res/drawable-ldpi/icon.png and b/android/res/drawable-ldpi/icon.png differ
old mode 100755 (executable)
new mode 100644 (file)
index a151929..812c295
Binary files a/android/res/drawable-mdpi/icon.png and b/android/res/drawable-mdpi/icon.png differ
similarity index 98%
rename from android/src/org/player/viper/ViperActivity.java
rename to android/src/io/fd/viper/ViperActivity.java
index e046d12..0696d0d 100755 (executable)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-package org.player.viper;
+package io.fd.viper;
 import org.qtproject.qt5.android.bindings.QtActivity;
 import android.content.Context;
 import android.content.Intent;
index 1ecf770..0e47c99 100644 (file)
@@ -1,33 +1,24 @@
 cmake_minimum_required(VERSION 3.5)
 project(libdash)
-
-
+set(CMAKE_CXX_STANDARD 14)
 if(ANDROID_API)
+    set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${ANDROID_C_FLAGS} -std=c++0x -g -DLOG_BUILD -stdlib=libc++")
     set(CMAKE_FIND_ROOT_PATH "$ENV{CCNX_HOME};${CMAKE_FIND_ROOT_PATH}")
-       #include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/include)
-       #include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include)
-       message("ciao!!!")
-       option(ANDROID "Build CP api based on ANDROID log lib" ON)
-       find_package(LibXml2 REQUIRED)
-       find_package(ZLIB REQUIRED)
-       find_package(CURL REQUIRED)
-       #set(LIBXML2_INCLUDE_DIR "$ENV{DISTILLERY_ROOT_DIR}/external/libxml2_android/jni/libxml2/include")
-       #set(LIBXML2_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libxml2.a")
-       #set(CURL_INCLUDE_DIRS "$ENV{DISTILLERY_ROOT_DIR}/external/libcurl_android/jni/libcurl/include")
-       #set(CURL_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl.a" "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl-library.a")
-       #set(ANDROID_LIBRARIES "$ENV{NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/$ENV{ABI}/libgnustl_shared.so")
-       set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${ANDROID_C_FLAGS} -std=c++0x -g -DLOG_BUILD -DANDROID_STL=c++_shared")
+    find_package(LibXml2 REQUIRED)
+    find_package(ZLIB REQUIRED)
+    find_package(CURL REQUIRED)
+    find_package(OpenSSL REQUIRED)
 elseif (COMPILE_FOR_IOS)
-       set(CMAKE_CXX_FLAGS "-std=c++0x -g -DLOG_BUILD")
-       find_package(LibXml2 REQUIRED)
-       find_host_package(OpenSSL REQUIRED)
-       find_package(ZLIB REQUIRED)
-       find_host_package(CURL REQUIRED)
+    set(CMAKE_CXX_FLAGS "-std=c++0x -g -DLOG_BUILD")
+    find_package(LibXml2 REQUIRED)
+    find_host_package(OpenSSL REQUIRED)
+    find_package(ZLIB REQUIRED)
+    find_host_package(CURL REQUIRED)
 else ()
-       set(CMAKE_CXX_FLAGS "-std=c++0x -g -DLOG_BUILD")
-       find_package(LibXml2 REQUIRED)
-       find_package(ZLIB REQUIRED)
-       find_package(CURL REQUIRED)
+    set(CMAKE_CXX_FLAGS "-std=c++0x -g -DLOG_BUILD")
+    find_package(LibXml2 REQUIRED)
+    find_package(ZLIB REQUIRED)
+    find_package(CURL REQUIRED)
 endif (ANDROID_API)
 set(DEBUG_BUILD FALSE)
 set(HEADER_FILES
@@ -190,14 +181,13 @@ include_directories(${WLIB_INCLUDE_DIRS})
 include_directories(${CURL_INCLUDE_DIRS})
 include_directories(include)
 
-if (COMPILE_FOR_IOS OR COMPILE_FOR_IOS_SIMULATOR)
+if (COMPILE_FOR_IOS OR COMPILE_FOR_IOS_SIMULATOR OR ANDROID_API)
   add_library(dash STATIC ${SOURCE_FILES})
 else()
   add_library(dash SHARED ${SOURCE_FILES})
 endif()
 set_target_properties(dash PROPERTIES LINKER_LANGUAGE CXX)
-target_link_libraries(dash ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} ${CURL_LIBRARIES} ${ANDROID_LIBRARIES} ${CURL_LIBRARIES})
-message("libxml ${LIBXML2_LIBRARIES} ${LIBXML2_INCLUDE_DIR}")
+target_link_libraries(dash ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} ${CURL_LIBRARIES} ${ANDROID_LIBRARIES} ${CURL_LIBRARIES}   ${OPENSSL_LIBRARIES})
 install(TARGETS dash DESTINATION ${CMAKE_INSTALL_PREFIX}/lib PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ COMPONENT library)
 install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/libdash COMPONENT headers)
 
index a1f2969..76fbe0c 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -27,6 +27,7 @@
 #include <QtAV/QtAV.h>
 #ifdef Q_OS_ANDROID
 #include <QAndroidJniObject>
+#include <QtAndroid>
 #endif
 #include "Common/QtQuick2ApplicationViewer.h"
 #include "../Common/Common.h"
@@ -159,7 +160,8 @@ int main(int argc, char *argv[])
         viewer.setY(op.value().toInt());
     if (options.value(QStringLiteral("fullscreen")).toBool())
         viewer.showFullScreen();
-    viewer.setTitle(QStringLiteral("Viper"));
+    viewer.setTitle(QStringLiteral("Viper")); 
+
 #if 1
     QString json = app.arguments().join(QStringLiteral("\",\""));
     json.prepend(QLatin1String("[\"")).append(QLatin1String("\"]"));
@@ -171,8 +173,19 @@ int main(int argc, char *argv[])
     qApp->installEventFilter(ae);
     QString file;
 #ifdef Q_OS_ANDROID
-    engine->rootContext()->setContextProperty("platform",  1);
-    file = QAndroidJniObject::callStaticObjectMethod("org.viper.com.ViperActivity"
+    const QVector<QString> permissions({"android.permission.INTERNET",
+                                        "android.permission.WRITE_EXTERNAL_STORAGE",
+                                        "android.permission.READ_EXTERNAL_STORAGE"});
+    for(const QString &permission : permissions){
+            auto result = QtAndroid::checkPermission(permission);
+            if(result == QtAndroid::PermissionResult::Denied){
+                auto resultHash = QtAndroid::requestPermissionsSync(QStringList({permission}));
+                if(resultHash[permission] == QtAndroid::PermissionResult::Denied)
+                    return 0;
+            }
+        }
+
+    file = QAndroidJniObject::callStaticObjectMethod("io.fd.viper.ViperActivity"
                                                      , "getUrl"
                                                      , "()Ljava/lang/String;")
             .toString();
index 3f8d7ab..64d6f45 100755 (executable)
@@ -449,7 +449,6 @@ Rectangle {
             anchors.top: parent.top
             anchors.right: textInputv6FirstWord.left
             anchors.rightMargin: Utils.scaled(5)
-            anchors.topMargin: (textInputv6Prefix.height - height)/2
             font.bold: true
             font.pixelSize: Utils.scaled(10);
         }
index 4290c7e..0d9e0e7 100644 (file)
--- a/viper.pro
+++ b/viper.pro
@@ -21,8 +21,7 @@ android {
 CONFIG -= release
 CONFIG += debug
 CONFIG += c++14
-QMAKE_CXXFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DANDROID_STL=c++_static
-QMAKE_CXXFLAGS += -std=c++14 -g -fpermissive -DASIO_STANDALONE=1
+QMAKE_CXXFLAGS += -std=c++14 -g -fpermissive -DASIO_STANDALONE=1 -stdlib=libc++ -DQTC_ENABLE_CLANG_LIBTOOLING=ON
 # Add more folders to ship with the application, here
 folder_01.source = qml/Viper
 folder_01.target = qml
@@ -306,7 +305,7 @@ macx:!ios {
 SOURCES *= main.cpp
 android {
     DISTFILES += \
-    android/src/org/player/viper/ViperActivity.java \
+    android/src/io/fd/viper/ViperActivity.java \
     android/gradle/wrapper/gradle-wrapper.jar \
     android/AndroidManifest.xml \
     android/res/values/libs.xml \
@@ -319,8 +318,16 @@ android {
     INCLUDEPATH += $$(DISTILLARY_INSTALLATION_PATH)/include
     INCLUDEPATH += $$(DISTILLARY_INSTALLATION_PATH)/include/libdash
     equals(TRANSPORT_LIBRARY, "HICNET") {
-        LIBS += -L"$$(DISTILLARY_INSTALLATION_PATH)/lib" -lhicnet -ljsoncpp -ldash -lcurl  -lxml2 -lccnx_common -lparc -lhicntransport -lhicn -levent -lssl -lcrypto -lavcodec -lavutil -lavformat
+        LIBS += -L"$$(DISTILLARY_INSTALLATION_PATH)/lib" -ldash -lhicntransport  -lhicn -lparc -lavcodec -lavutil -lavformat -lswresample -lcurl -lxml2 -lssl -lcrypto -lQtAV
         DEFINES += "HICNET=ON"
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libswresample.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavresample.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavdevice.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavfilter.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavcodec.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavformat.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libswscale.so
+        ANDROID_EXTRA_LIBS += $$(DISTILLARY_INSTALLATION_PATH)/lib/libavutil.so
     } else {
         LIBS += -L"$$(DISTILLARY_INSTALLATION_PATH)/lib" -licnet -ldash -lcurl  -lxml2 -lccnx_api_portal -lccnx_transport_rta -lccnx_api_control -lccnx_api_notify -lccnx_common -lparc -llongbow -llongbow-ansiterm -llongbow-textplain -levent -lssl -lcrypto -lavcodec -lavutil -lavformat   -lboost_system
         DEFINES += "ICNET=ON"
@@ -336,4 +343,4 @@ DISTFILES += \
     android/res/drawable-mdpi/icon.png \
     android/gradle.properties \
     android/src/org/qtav/qmlplayer/ViperActivity.java \
-    android/src/org/player/viper/ViperActivity.java
+    android/src/io/fd/viper/ViperActivity.java