我应该怎么做,开始从程序代码的SmartWatch扩展?(How should I do to st

2019-06-25 10:13发布

我想知道从程序代码开始的SmartWatch扩展的方法。 例如,意图等我注册脚本语言的SmartWatch在谷歌玩一天。 它分为两种方案,一种是注册为的SmartWatch扩展(BitmapCatcher),另一种是注册为智能手机应用程序(Luarida)。 该脚本从智能手机开始。 在这里,我想在同一时间开始BitmapCatcher作为启动脚本。 虽然它认为BitmapCatcher可以在没有屏幕触摸如果Intnent发送到活件开始不被理解的方式。

请告诉其中的SmartWatch扩展,而不在屏幕触摸启动的程序代码。

(有人建议向Jerker先生在这个网站的时候,我写在索尼移动网站的智能额外讨论这个问题。)


的SmartWatch扩展无法虽然测试它指的是你的解释是从其他Android应用程序启动。 请重新教。
我应该在“Your.package.name”写?
此外,我应该怎么写“HostAppPackageName”?

通过sendBroadcast启动一个是BitmapCatcher。 这个包的名字是“com.luaridaworks.smartwatch.bitmapcatcher”。
在测试程序中,它写道如下。 它继续这样的评论。

package com.luaridaworks.test02;
 import com.sonyericsson.extras.liveware.aef.control.Control;
 import com.sonyericsson.extras.liveware.aef.registration.Registration;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 public class Test02Activity extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
        intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.luaridaworks.smartwatch.bitmapcatcher");
        intent.setPackage("com.luaridaworks.smartwatch.bitmapcatcher");
        sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);
     }
 } 

由于BitmapCatcher没有启动,目的是改写如下所示,测试。

intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.luaridaworks.smartwatch.bitmapcatcher");
intent.setPackage("com.sonyericsson.extras.liveware");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

它没有类似的开始。 意图被重写如下并进行测试。

intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.luaridaworks.smartwatch.bitmapcatcher");
intent.setPackage("com.luaridaworks.test02");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

它没有类似的开始。 意图被重写如下并进行测试。

intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.luaridaworks.test02");
intent.setPackage("com.luaridaworks.smartwatch.bitmapcatcher");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

它没有类似的开始。 意图被重写如下并进行测试。

intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.sonyericsson.extras.liveware");
intent.setPackage("com.luaridaworks.smartwatch.bitmapcatcher");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

它没有类似的开始。 它尚未成功。
请给一个名为com.luaridaworks.test02程序代码,其中“com.luaridaworks.smartwatch.bitmapcatcher”通常是从应用程序启动的例子。

Answer 1:

请您通过发送START_REQUEST意图,如在SDK工具类中定义,开始您的扩展。 还有的的API规范的这一章中6.1参考SDK 。

Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "your.package.name");
intent.setPackage(hostAppPackageName);
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

参考“your.package.name”是被存储到数据库的扩展,当您的分机已注册的包名。 如果你看一下SDK中的例子,每个扩展示例有一个方法getExtensionRegistrationConfiguration一个SampleRegistrationInformation。 这是登记经由ContentProvider的存储到数据库中。 下面一行存储您的包名。

values.put(Registration.ExtensionColumns.PACKAGE_NAME, mContext.getPackageName());

我认为,从看你的例子,你的包名是“com.luaridaworks.smartwatch.bitmapcatcher”?

hostAppPackageName是的SmartWatch主机应用程序的包名。 关于这个包的名字的信息与您从主机应用程序收到的每意图发送。 在SDK样品,我们存储主机的应用程序包名称在全局变量中供以后使用,因此,在代码中hostAppPackageName参考。 我谈多一点关于这这个问题 。 如果你想硬编码主机应用程序包的名称,这是它:com.sonyericsson.extras.smartwatch。 但我建议你不这样做 ,因为它可能会改变未来。

因此,下面(硬编码)应为你工作:

Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, "com.luaridaworks.smartwatch.bitmapcatcher");
intent.setPackage("com.sonyericsson.extras.smartwatch");
sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);


文章来源: How should I do to start SmartWatch Extension from the program code?