« 2013年5月 | トップページ | 2013年7月 »

2013年6月

2013年6月24日 (月)

【Tizen】別のアプリケーションを起動する

今回は、Tizenで別のアプリケーションを起動する方法についてです。

まだ調べてる途中ではありますが、

どうやらTizenでの他のアプリケーション起動方法は2通りあるようです。


●"tizen.application.launch()"を使用する

こちらは、起動先のアプリを明示的に指定して起動する場合に使うもののようです。

どうやら、Androidでいうところの、明示的インテントにあたるのではないかと。


●"tizen.application.launchAppControl()"を使用する

こちらは、要求動作を指定する方法のようです。

画像処理を行える動作を要求すると、それに該当するアプリが起動するしくみかと。

Androidでいうところの、暗黙的インテントでしょうか。

※まだ調査中です。間違っていたら、突っ込んでいただけるとうれしいです。


今回は、"tizen.application.launch()"を使用して起動する方法について

書き残しておきたいと思います。


手順は以下のとおりです。


(1) privilegeに、"http://tizen.org/privilege/application.launch"を追加する

    config.xmlのprivilegeに、"http://tizen.org/privilege/application.launch"を追加します。

    これを追加しないと、他のアプリを起動するAPIを実行できません。


図1.privilegesの追加

151


(2) "tizen.application.launch()"を呼ぶソースを記述する。

前述のとおり、別アプリの起動は、"tizen.application.launch()"で行います。

このAPIの詳細は、以下のようになっています。

    tizen.application.launch(
        applicationID, // 起動先アプリのID
        onSuccess, // 起動成功時に呼ばれるコールバックメソッド
        onError // 起動失敗時に呼ばれるコールバックメソッド
    );

ポイントは、起動先アプリIDの指定です。

起動先アプリIDを確認するには、起動先アプリのconfig.xmlを見ましょう。

アプリIDは、config.xmlのtizenタブに記述されています。アプリIDは、

アプリのプロジェクトを作ったときに自動生成されます。


図2.起動先アプリIDの確認

152

下記に記述しているのは、ボタンをクリックされたときに、

アプリケーションIDが"JyBw872Ey4"のアプリを起動するサンプルコードです。

●index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta name="description" content="A Tizen Web UI FW single-page template generated by Tizen Web IDE"/>
    <title>起動元アプリケーション</title>
    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js"
        data-framework-theme="tizen-white"></script>

    <script type="text/javascript" src="./js/main.js"></script>
    <script type="text/javascript" src="./js/launchApp.js"></script>
    <link rel="stylesheet" type="text/css" href="./css/style.css"/>
</head>
<body>
    <div data-role="page">
        <div data-role="header" data-position="fixed">
            <h1>起動元アプリケーション</h1>
        </div><!-- /header -->
        <div data-role="content">
	    <div data-role="button" onclick="javascript:launchApp()">別のアプリケーションを起動</div>
        </div><!-- /content -->
    </div><!-- /page -->
</body>
</html>

●js/launchApp.js

function launchApp() {
     tizen.application.launch(
         "JyBw872Ey4", // 起動先アプリのID
         onSuccess, // 起動成功時に呼ばれるコールバック
         onError // 起動失敗時に呼ばれるコールバック
     );
}

function onSuccess() {
     console.log("success");
}

function onError(e) {
     console.log("faile : " + e.name + " " + e.message);
}

これで、別アプリを起動する処理の実装は、完了です。

【Tizen】電波状態を取得する

Tizenにて、電波状態を取得する方法です。

"navigator.onLine"APIを使うことで、無事に電波状態が取得できました。
これでようやく圏外時の処理が組めました・・・。
htmlやらjavascriptやらの予備知識ゼロな僕には、やはり敷居が高いです。 orz
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8"/>
    <meta name="description" content="A Tizen Web UI FW single-page template generated by Tizen Web IDE"/>
    <title></title>
    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js"
        data-framework-theme="tizen-white"></script>
    <script type="text/javascript" src="./js/main.js"></script>
    <link rel="stylesheet" type="text/css" href="./css/style.css"/>
</head>

<body>
    <div data-role="page">
        <div data-role="header" data-position="fixed">
            <h1>電波状況の確認</h1>
        </div><!-- /header -->
        <div id ="content" data-role="content">
			<script type="text/javascript">
				function isConnected() {
					return navigator.onLine;
				}
				var connected = isConnected();
				if (connected) {
					document.getElementById("content").innerText = "電波はつながっています。";
				} else {
					document.getElementById("content").innerText = "圏外です。";
				}
			</script>
        </div><!-- /content -->

    </div><!-- /page -->
</body>
</html>

2013年6月 5日 (水)

【Android】adtをver22にバージョンアップしたら、NoClassDefFoundErrorが発生するようになった!

ずいぶんご無沙汰になってしまいました・・・。

先日、いつもどおりexlipseを起動したら、adtの更新があったので、

アップデートしました。

 

すると・・・。

 

それまでインストールすると問題なく動いていたアプリが、

アップデート後にビルドしてインストールすると、

"NoClassDefFoundError"が発生して強制終了するようになりました_| ̄|○

どうやら、adt22以降は、apk生成時にプロジェクトのlibs配下にある

jarファイルが自動でエクスポートされなくなったようです。

この現象は、次の手順で解決できます。


(1) プロジェクト右クリック⇒「ビルドパスの構成」選択でビルドパス設定ダイアログ起動

Blog13_1

 

(2) 「順序及びエクスポート」タブ選択

 

(3) 「Android Private Libraries」にチェックを入れる

Blog13_2

(4) 「OK」をクリックして設定完了。

 

 

これで、あとはビルドしてアプリをインストールすれば、

エラーが発生せずに実行できます。

« 2013年5月 | トップページ | 2013年7月 »

購入


無料ブログはココログ