DirectRendering demo
[platform/core/uifw/dali-demo.git] / shared / execute-process-android.cpp
index d042a55..59bc63b 100644 (file)
  *
  */
 
- // FILE HEADER
+// FILE HEADER
 #include "execute-process.h"
 
- // EXTERNAL INCLUDES
-#include <sstream>
+// EXTERNAL INCLUDES
 #include <unistd.h>
+#include <sstream>
+
+#include <dali/integration-api/adaptor-framework/android/android-framework.h>
+#include <dali/integration-api/debug.h>
 #include <dali/public-api/common/dali-common.h>
 
-void ExecuteProcess( const std::string& processName, Dali::Application& application )
-{
-  std::stringstream stream;
-  stream << "am start -a android.intent.action.MAIN -n com.sec.dalidemo/.DaliDemoNativeActivity --user 0 --es start " << processName.c_str();
-  pid_t parentPID = getpid();
+#include <android_native_app_glue.h>
+#include <dali-demo-native-activity-jni.h>
 
-  pid_t pid = fork();
-  if( pid == 0 )
-  {
-    do
-    {
-      sleep( 1 );
-    }
-    while( kill( parentPID, 0 ) == 0 );
-
-    system( stream.str().c_str() );
-    exit( 0 );
-  }
-  else
+void ExecuteProcess(const std::string& processName, Dali::Application& application)
+{
+  struct android_app* nativeApp = Dali::Integration::AndroidFramework::Get().GetNativeApplication();
+  if(!nativeApp)
   {
-    application.Quit();
+    DALI_LOG_ERROR("Couldn't get native app.");
+    return;
   }
+
+  DaliDemoNativeActivity nativeActivity(nativeApp->activity);
+  nativeActivity.LaunchExample(processName);
 }