0

私はタップでSMSを送信する小さなウィジェット拡張機能を開発しようとしています。これは非常にうまく機能しますが、スマートウォッチを振動させてSMSが送信されたことを確認したいと思います。ウィジェット拡張からバイブレーターを起動できますか?

私が理解しているように、ホストアプリにインテントを送信することで、バイブレーションを開始するのに十分なはずです。

WidgetExtension onTouchを拡張する私のクラスでは:

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

また、ControlExtensionを拡張する個別のバイブレータークラスを作成してみました。

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);
    }

}

そして、発砲は効果なしでウィジェット拡張から振動します。私が見落としているものは?本当にありがとう!

4

1 に答える 1

1

ウィジェットタッチでバイブレーションを開始する唯一の方法は、予備のControlExtensionを開始することだと思われます。

ウィジェットonTouch:

Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);
intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, mContext.getPackageName());
sendToHostApp(intent);

登録情報:

getRquiredControlApiVersionを1を返すように設定します。

そしてExtensionServiceに以下を追加します。

@Override
public ControlExtension createControlExtension(String hostAppPackageName) {
    return new Vibrator(hostAppPackageName, this);
}

およびバイブレータークラス:

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);
     }
}
}

仕事をします。

于 2013-01-21T08:37:17.803 に答える