私はtizenウェアラブルアプリケーションを作成して、ボタンクリック時にtizen Webアプリケーションからネイティブサービスを呼び出すことができます。 私は先週これを見つけましたが、この問題を解決することはできませんでした。誰もコードを教えてくれますか? ありがとうTizenウェアラブルのWebアプリケーションからネイティブアプリケーションを起動する
-1
A
答えて
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";
});
};
デモ:
関連する問題
- 1. Tizen Webアプリケーションは、ウェアラブル:TypeMismatchError
- 2. ギャラクシーギアs2 - Tizen WebアプリケーションからAndroidアプリケーションを起動する
- 3. tizenウェアラブル(Webアプリケーション)のキーボードのフォントスタイルを変更します
- 4. tizen web app、別のWebアプリケーションを起動する
- 5. Tizen Web:どのアプリケーションが起動されたかをコールバックする方法
- 6. Tizenはウェアラブルからアンドロイドに、また携帯からウェアラブルにデータを送信します。
- 7. アプリケーションからWebブラウザを起動
- 8. Tizenウェアラブル:センサデータを周囲モードで取得できますか?
- 9. WebアプリケーションからWinRTアプリケーションを起動するには?
- 10. TizenウェアラブルWebアプリケーションは、いつでもSamsung Gear S3で実行を停止します
- 11. Tizen WebアプリケーションAngular JSチュートリアル
- 12. コンソールWebアプリケーションから起動した後にアプリケーションがクラッシュする
- 13. Tizenネイティブアプリケーションでファイルに書き込む
- 14. Native Tizenウェアラブルでlibcurlを使用してurlからjsonレスポンスを出力
- 15. ネイティブアプリケーションが起動時にフリーズする
- 16. 他のアプリケーションからSpring起動アプリケーションを起動する
- 17. Webアプリケーションからサーバー上のUIを起動する
- 18. UWP(Universal Windows Platform)WebアプリケーションからPDFを起動する方法
- 19. Webサイト/終了アプリケーションからJavaScriptを起動する
- 20. TizenウェアラブルWebアプリで、アプリのUIをバックグラウンドで表示するように通知する
- 21. Webからネイティブアプリケーションへの移行
- 22. `ServletContextListener`メソッド` contextInitialized`からWebアプリケーションの起動を停止します
- 23. インターネットでJava Webアプリケーションを起動する
- 24. Webサイトからデスクトップアプリケーションを起動する
- 25. iOSのホーム画面からキャッシングWebアプリケーションを起動
- 26. Java Web Startアプリケーションの起動後に何も起こらない
- 27. ApplicationMenuItemからアプリケーションを起動
- 28. VSCodeからアプリケーションを起動
- 29. SMSメッセージからアプリケーションを起動する
- 30. Cocoaアプリケーションからデーモンを起動する
は、あなたがメッセージポートの通信を試みたことがありますか? –
あなたはそれを試しましたか? –