2017-08-23 13 views
-1

私はtizenウェアラブルアプリケーションを作成して、ボタンクリック時にtizen Webアプリケーションからネイティブサービスを呼び出すことができます。 私は先週これを見つけましたが、この問題を解決することはできませんでした。誰もコードを教えてくれますか? ありがとうTizenウェアラブルのWebアプリケーションからネイティブアプリケーションを起動する

+0

は、あなたがメッセージポートの通信を試みたことがありますか? –

+0

あなたはそれを試しましたか? –

答えて

0

私はあなたが "ハイブリッド" tizenアプリケーションを開発しようと考えていると思います。 as tizen.org

"Tizenプラットフォームでは、Web UIアプリケーションと1つ以上のネイティブサービスまたはウィジェットアプリケーションを組み合わせたハイブリッドアプリケーションパッケージを作成できます。

これを行うサンプルアプリケーションもあります。 Hybrid Sample App

ここにパッケージ方法の詳細があります。 Tizen Hybrid Applications

1

可能です。私はこれをhere Receiving Bundle from Native Appから見つけました。

サービスコード

#include <tizen.h> 
#include <service_app.h> 
#include <bundle.h> 
#include <message_port.h> 
#include "messageportnativeservicesend.h" 

#define TAG "xyz" 

void 
sendMessage(char *remote_app_id,char *remote_port,bundle *reply){ 

    int ret = message_port_send_message(remote_app_id, remote_port, reply); 

    if (ret != MESSAGE_PORT_ERROR_NONE) 
     dlog_print(DLOG_ERROR, TAG, "message_port_check_remote_port error: %d", ret); 
    else 
     dlog_print(DLOG_INFO, TAG, "Send message done"); 

    dlog_print(DLOG_INFO, TAG, "Send message was called"); 
} 

void 
test_check_remote_port(char *remote_app_id,char *remote_port,bool result) 
{ 
    int ret; 
    ret = message_port_check_remote_port(remote_app_id,remote_port,&result); 
    if (ret != MESSAGE_PORT_ERROR_NONE) 
     dlog_print(DLOG_ERROR, TAG, "message_port_check_remote_port error: %d", ret); 
} 

void msgPort() 
{ 
    char *remote_app_id="mRLmiKfKmV.MessagePortWebReceiver"; 
    char *remote_port="CrossPort"; 
    bool result; 

    test_check_remote_port(remote_app_id,remote_port,result); 
    dlog_print(DLOG_DEBUG, TAG ,"Remote port exists: %s", result ? "true" : "false"); 

    bundle *reply; 
    reply=bundle_create(); 

    char *array[] = {"XY","YZ","ZX","AB"}; 

    bundle_add_str(reply,"test","A"); 
    bundle_add_str_array(reply,"service",array, 4); 

    dlog_print(DLOG_DEBUG, TAG, "Bundled Successfully"); 


    if (result){ 
     sendMessage(remote_app_id,remote_port,reply); 
     bundle_free(reply); 
    } 

} 

bool service_app_create(void *data) 
{ 
    msgPort(); 
    return true; 
} 

void service_app_terminate(void *data) 
{ 
    // Todo: add your code here. 
    return; 
} 

void service_app_control(app_control_h app_control, void *data) 
{ 
    // Todo: add your code here. 
    return; 
} 

static void 
service_app_lang_changed(app_event_info_h event_info, void *user_data) 
{ 
    /*APP_EVENT_LANGUAGE_CHANGED*/ 
    return; 
} 

static void 
service_app_region_changed(app_event_info_h event_info, void *user_data) 
{ 
    /*APP_EVENT_REGION_FORMAT_CHANGED*/ 
} 

static void 
service_app_low_battery(app_event_info_h event_info, void *user_data) 
{ 
    /*APP_EVENT_LOW_BATTERY*/ 
} 

static void 
service_app_low_memory(app_event_info_h event_info, void *user_data) 
{ 
    /*APP_EVENT_LOW_MEMORY*/ 
} 

int main(int argc, char* argv[]) 
{ 
    char ad[50] = {0,}; 
    service_app_lifecycle_callback_s event_callback; 
    app_event_handler_h handlers[5] = {NULL, }; 

    event_callback.create = service_app_create; 
    event_callback.terminate = service_app_terminate; 
    event_callback.app_control = service_app_control; 

    service_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, service_app_low_battery, &ad); 
    service_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, service_app_low_memory, &ad); 
    service_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, service_app_lang_changed, &ad); 
    service_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, service_app_region_changed, &ad); 

    return service_app_main(argc, argv, &event_callback, ad); 
} 

のWebコード:

window.onload = function() { 
    // TODO:: Do your initialization job 

    // add eventListener for tizenhwkey 
    document.addEventListener('tizenhwkey', function(e) { 
     if(e.keyName === "back") { 
      try { 
       tizen.application.getCurrentApplication().exit(); 
      } catch (ignore) { 
      } 
     } 
    }); 



    /* MessagePortCallback instance */ 
    function onReceived(data, remoteMsgPort) { 
     console.log("Local port Listener Called"); 

     for (var i = 0; i < data.length; i++){ 
      var keyX = data[i].key; 
      console.log("key:" + keyX); 

      for (var j = 0; j < data[i].value.length; j++){ 
       var valueX = data[i].value[j]; 
       console.log("value:" + valueX);   
      } 
     } 

    } 

    function messagePort(){ 
     var localPort = tizen.messageport.requestLocalMessagePort("CrossPort"); 
     localPort.addMessagePortListener(onReceived); 
     console.log("Local port Listener Registered"); 
    } 

    // Sample code 
    var textbox = document.querySelector('.contents'); 
    textbox.addEventListener("click", function(){ 
     messagePort(); 
     var box = document.querySelector('#textbox'); 
     box.innerHTML = (box.innerHTML === "Basic") ? "Sample" : "Basic"; 
    }); 

}; 

デモ:

enter image description here

関連する問題