首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索尼智能手表-在小部件轻敲时振动智能手表

索尼智能手表-在小部件轻敲时振动智能手表
EN

Stack Overflow用户
提问于 2013-01-19 18:17:35
回答 1查看 1.1K关注 0票数 0

我正在尝试开发一个小部件扩展,发送短信的自来水。这很好用,但我想确认短信是通过震动智能手表发送的。我可以从小部件扩展中启动可控震源吗?

据我所知,发送意图到主机应用程序应该足以开始振动。

在我的类扩展WidgetExtension onTouch中:

代码语言:javascript
复制
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("124124512", null, "blaa", null, null); // Works fine

Intent intent = new Intent(Control.Intents.CONTROL_VIBRATE_INTENT);
intent.putExtra(Control.Intents.EXTRA_ON_DURATION, 1000);
intent.putExtra(Control.Intents.EXTRA_OFF_DURATION, 1000);
intent.putExtra(Control.Intents.EXTRA_REPEATS, 1);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, mContext.getPackageName());
intent.setPackage(mHostAppPackageName);
context.sendBroadcast(intent, Registration.HOSTAPP_PERMISSION); // No vibration

我还尝试创建单独的Vibrator类来扩展ControlExtension:

代码语言:javascript
复制
public class Vibrator extends ControlExtension{

    public Vibrator(Context context, String hostAppPackageName) {
        super(context, hostAppPackageName);
        // TODO Auto-generated constructor stub
    }

    public void vibrate(){
        startVibrator(1000, 1000, 1);
    }

}

并从窗口小部件扩展中触发振动,但没有任何效果。我忽略了什么吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-01-21 16:37:18

似乎在widget touch上启动振动的唯一方法是启动一个稀疏的ControlExtension:

小部件onTouch:

代码语言:javascript
复制
Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, mContext.getPackageName());
sendToHostApp(intent);

在RegistrationInformation中:

将getRquiredControlApiVersion设置为返回1。

在ExtensionService中添加:

代码语言:javascript
复制
@Override
public ControlExtension createControlExtension(String hostAppPackageName) {
    return new Vibrator(hostAppPackageName, this);
}

和Vibrator类:

代码语言:javascript
复制
public class Vibrator extends ControlExtension{


Vibrator(String hostAppPackageName, Context context){
    super(context, hostAppPackageName); 

}   

 @Override
    public void onStart() {
        vibrate();
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("123456789", null, "BLAAA", null, null); 
        showBitmap(new SmartWatchSampleWidgetImage(mContext, 2).getBitmap());
    }

 @Override
    public void onTouch(final ControlTouchEvent event) {
        int action = event.getAction();
        if (action == Control.Intents.TOUCH_ACTION_PRESS) {

        }      
 }

public void vibrate(){

     if(hasVibrator()){
            startVibrator(1000, 500, 3);
     }
}
}

就能完成这项工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14413277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档