wear-oswatchface

Uploading my designed watch face to a watch using a companion app


I have designed a watch face using Samsung Watch Face Studio. The output is a package (.apk file). When I directly upload it to the Google Store, its not easily installed by my customers.

I have seen most of other developers having a companion app for the installation of the face. I am here asking how this companion app sends the watch face? I am an android developer with good background. I feel there is an easy way those apps are using to send the watch face (or maybe just link to the good store?) to the watch. At the watch, the user will find an install prompt to install the watch. Please if you can help me.

Hossam

I tried to upload the watch face app (.apk) file to the google store, and almost all my customers cannot find it. And even if they find it, it says your device is not compatible with this app!!


Solution

  • Basically those companion apps for watchface are just to launch the Playstore on the watch directly on your watchface (~deeplink) so the user can install on the watch without having to search for it...

    The "not compatible" message is because the watchface is for watch and the user is accessing it on the phone... I know, it's past time to google fix this thing and improve the playstore, or developers will have to come up together to find a better work around, anyaway.

    The companion app:

    private Node WATCH_NODE;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
    
        new Thread(() -> {
            Task<List<Node>> nodeListTask = Wearable.getNodeClient(getApplicationContext()).getConnectedNodes();
    
            try {
                WATCH_NODE = Tasks.await(nodeListTask).get(0);
            } catch (Exception ignore) {}
        }).start();
    
        findViewById(R.id.button_id_here).setOnClickListener((l) -> {
            Intent i = new Intent(Intent.ACTION_VIEW);
    
            i.addCategory(Intent.CATEGORY_BROWSABLE);
    
            i.setData(Uri.parse("market://details?id=" + getPackageName()));
    
            RemoteActivityHelper remoteActivityHelper = new RemoteActivityHelper(this, Executors.newSingleThreadExecutor());
    
            remoteActivityHelper.startRemoteActivity(i, WATCH_NODE.getId());
    
            Toast.makeText(this, "Check your watch", Toast.LENGTH_SHORT).show();
        });
    }
    

    Add the dependencies to the gradle mobile module:

    implementation 'com.google.android.gms:play-services-wearable:18.0.0'
    implementation 'androidx.wear:wear-remote-interactions:1.0.0'