2017-04-08 4 views
1

サムスンギャラクシーS8のBixbyボタン(KeyCode:1082)をプログラムして、Bixbyランチャーの代わりにアプリケーションを起動する方法はありますか? App All in one Gesturesには既にカスタムキーでこの機能がありますが、これをプログラムでAndroidでどのように行うことができますか?私のアプリが正面でない場合でも、Bixbyボタンのプレスイベントを受け取る方法は?

+1

ジェスチャーはすべて「AccessibilityService」を使用します。同じことをすることはできますが、ユーザーは明示的にアプリを有効にする必要があります。 –

+0

@MikeM。ありがとうございました。このボタンイベントトリガーを登録するにはどうしたらいいですか? –

答えて

1

Samsungはこれを行うユーザーを承認しておらず、少なくとも一部の場所では最近の更新でこの機能を無効にしているようです。レポートはさまざまですが、以下の例はすべてのデバイスで動作しないか、近い将来に動作する可能性があることに注意してください。詳細は、次の記事(XDA開発者へのオフサイトリンク)でご利用いただけます:

Samsung has Removed the Ability to Remap the Bixby Button on the Galaxy S8/S8+


1つのジェスチャーのすべてがこれを達成するためにAccessibilityServiceを使用しています。あなたのアプリは同じことをすることができますが、ユーザーがデバイス設定のアクセシビリティサービスとして明示的にアプリを有効にする必要があります。

ビクスビーボタンは明らかにあなたのAccessibilityServiceがちょうどonKeyEvent()メソッドをオーバーライドして、渡されたイベントのキーコードをチェックする必要がある1082のキーコードで簡単なKeyEvent Sを発するたとえば:。

public class BixbyInterceptService extends AccessibilityService { 

    private static final int KEYCODE_BIXBY = 1082; 

    @Override 
    protected boolean onKeyEvent(KeyEvent event) { 
     if (event.getKeyCode() == KEYCODE_BIXBY && 
      event.getAction() == KeyEvent.ACTION_DOWN) { 

      // Do your thing here; startActivity(), Toast, Notification, etc. 
      Toast.makeText(this, "Bixby button pressed", 0).show(); 

      // Return true to stop the event from propagating further. 
      return true; 
     } 

     return super.onKeyEvent(event); 
    } 

    @Override 
    public void onAccessibilityEvent(AccessibilityEvent event) {} 

    @Override 
    public void onInterrupt() {} 
} 

あなたは」マニフェストにAccessibilityServiceを適切に登録する必要があります。そのためには、マニフェストとして有効にすることができます。例えば、<application>タグ間:

<service 
    android:name=".BixbyInterceptService" 
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> 
    <intent-filter> 
     <action android:name="android.accessibilityservice.AccessibilityService" /> 
    </intent-filter> 
    <meta-data 
     android:name="android.accessibilityservice" 
     android:resource="@xml/bixby_service_config" /> 
</service> 

Serviceに必要な設定を使用してXMLファイルにポイント上記<meta-data>要素にresource属性。プロジェクトのres/フォルダの下に、必要に応じてxml/フォルダを作成し、そこにこのファイルを追加します。インストール後

bixby_service_config.xml

<?xml version="1.0" encoding="utf-8"?> 
<accessibility-service 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accessibilityFlags="flagRequestFilterKeyEvents" 
    android:canRequestFilterKeyEvents="true" 
/> 

を、あなたは、アクセシビリティ]セクションの下にサービスでアプリを有効にする必要があります。デバイスの設定。

+0

正確にbixby_service_config.xmlを作成する必要があります。 – Kriti

+0

'res/xml /'にあります。 'drawable * /'、 'layout * /'などのフォルダを探します。すでに 'xml /'フォルダがない場合は作成し、そこに 'bixby_service_config.xml'ファイルが入ります。 –

+0

@MikeM。 bibxyアプリをインテントからどのように呼び出すことができますか?ありがとう。私の質問はこちらhttps://stackoverflow.com/questions/44511645/how-to-start-bibxy-activity-using-programming – user8264

関連する問題