2016-12-07 12 views
0

私はsony smartwatch 3を使用しています。これには、制御したい、または操作したい電源ボタンがあります。アンドロイドウェアラブルで物理的なキーのクリックを検出するにはどうすればよいですか?

onKeyDown() 
onKeyUp() 
onKeyLongPress() 

が、成功しませんそれもキーの押下を検出しません: 私はすでに使用して試してみました。

私はまたdispatchkeyevent(keyevent event)shouldOverrideKeyEvent(keyevent event)を使ってみましたが、やはり成功しませんでした。 ご案内ください。

答えて

0

GoogleApiClientを初期化して接続する必要があります。ボタンをクリックすると、ノードのリストを取得し、messageをそれらに送信する必要があります。最後のステップは、アプリケーションのこのメッセージfronの携帯電話の部分を読むことです、これは適切なWearableListenerServiceを登録することによって行うことができます。以下のサンプルコードをご覧ください。

ウェアラブルアプリケーション:

public class WearableButtonActivity extends Activity { 

    private GoogleApiClient mGoogleApiClient; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.wearable_button_activity); 

     mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 
     mGoogleApiClient.connect(); 
    } 

    public void onButtonClicked(View target) { 
     if (mGoogleApiClient == null) 
      return; 

     final PendingResult<NodeApi.GetConnectedNodesResult> nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient); 
     nodes.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() { 
      @Override 
      public void onResult(NodeApi.GetConnectedNodesResult result) { 
       final List<Node> nodes = result.getNodes(); 
       if (nodes != null) { 
        for (int i=0; i<nodes.size(); i++) { 
         final Node node = nodes.get(i); 

         // You can just send a message 
         Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "/MESSAGE", null); 

         // or you may want to also check check for a result: 
         // final PendingResult<SendMessageResult> pendingSendMessageResult = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "/MESSAGE", null); 
         // pendingSendMessageResult.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { 
         //  public void onResult(SendMessageResult sendMessageResult) { 
         //   if (sendMessageResult.getStatus().getStatusCode()==WearableStatusCodes.SUCCESS) { 
         //    // do something is successed 
         //   } 
         //  } 
         // }); 
        } 
       } 
      } 
     }); 
    } 
} 

リスナー:

findViewById(R.id.button).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onButtonClicked(v); 
     } 
    }); 

電話アプリケーション:私の質問は、oを押しを検出する方法だった

public class DataLayerListenerService extends WearableListenerService { 

    @Override 
    public void onMessageReceived(MessageEvent messageEvent) { 
     super.onMessageReceived(messageEvent); 
     if("/MESSAGE".equals(messageEvent.getPath())) { 
      // launch some Activity or do anything you like 
     } 
    } 
} 
+0

f物理的なキーすなわちパワーボタンのようなハードウェアキーは、私が言ったXMLボタンではありません。私はこの答えを受け入れることができません。あなたにハードウェアキーに関する提案があれば、私を案内してください@ d.datul1990 –

関連する問題