FORUMS

[App][OpenSource] SMSGear - SMS Application for Gear S3

1,672 posts
Thanks Meter: 2,200
 
By jamesst20, Senior Member on 15th February 2017, 11:34 PM
Post Reply Email Thread
Hi,

I had the chance to try out the Samsung Gear S3 for few days. While this watch is amazing, probably my favorite as today, it sadly has no SMS Application built-in (For Non-Samsung phones), and no SMS Applications on the Samsung Gear Store nether.

I made the project open source, as there is still rooms for improvements.

Product page : https://gitlab.com/Jamesst20/SMSGear

GitLab :
The Following 13 Users Say Thank You to jamesst20 For This Useful Post: [ View ] Gift jamesst20 Ad-Free
16th February 2017, 12:43 AM |#2  
Member
Thanks Meter: 12
 
More
This is awesome,

Hope it gains traction would love to be able to use this watch with textra
The Following User Says Thank You to Sparacis For This Useful Post: [ View ] Gift Sparacis Ad-Free
16th February 2017, 12:47 AM |#3  
jamesst20's Avatar
OP Senior Member
Thanks Meter: 2,200
 
Donate to Me
More
Quote:
Originally Posted by Sparacis

This is awesome,

Hope it gains traction would love to be able to use this watch with textra

Thank you

The application works fine with Textra. Also, Textra notifications works pretty well out of the box with the watch
16th February 2017, 12:50 AM |#4  
Member
Thanks Meter: 12
 
More
Quote:
Originally Posted by jamesst20

Thank you

The application works fine with Textra. Also, Textra notifications works pretty well out of the box with the watch

It does but not being able to start a conversation via textra from the watch is annoying
16th February 2017, 01:28 AM |#5  
Senior Member
Thanks Meter: 47
 
More
Quote:
Originally Posted by jamesst20

Hi,

I had the chance to try out the Samsung Gear S3 for few days. While this watch is amazing, probably my favorite as today, it sadly has no SMS Application built-in (For Non-Samsung phones), and no SMS Applications on the Samsung Gear Store nether.

I made the project open source, as there is still rooms for improvements.

Product page : https://gitlab.com/Jamesst20/SMSGear

GitLab :

About circle-helper, this might help https://forum.xda-developers.com/sho...04&postcount=5, also i haven't run your code yet, why do you need a rotarydetent listener? Snaplist should handle those events already.
16th February 2017, 01:46 AM |#6  
jamesst20's Avatar
OP Senior Member
Thanks Meter: 2,200
 
Donate to Me
More
Quote:
Originally Posted by 10urshin

About circle-helper, this might help https://forum.xda-developers.com/sho...04&postcount=5, also i haven't run your code yet, why do you need a rotarydetent listener? Snaplist should handle those events already.

Thank you for the link, I was the one posting the solution on the thread you posted His implementation is different than mine, however, I would be very suprised that it makes a difference for the known issue, as the SnapLists are recreated on the refresh since there is a page change.

Also, the rotarydetent listener is used to scroll sms in conversations (but not conversations list). The reason why is because the SnapList would scroll 1 element per element, making big messages unreadable. Also, it would make a weird scrolling feeling since it's not all list item that have the same height.

It was my first Gear S3/Tizen project ever, maybe you have some knowledge to share

Edit :

The Samsung Documentation for Wearable is very very incomplete. Do you know if there are methods such as AddItem/RemoveItem, etc on the ListView ? https://developer.tizen.org/ko/devel...idget_list.htm
16th February 2017, 04:10 AM |#7  
Senior Member
Thanks Meter: 47
 
More
Quote:
Originally Posted by jamesst20

Thank you for the link, I was the one posting the solution on the thread you posted His implementation is different than mine, however, I would be very suprised that it makes a difference for the known issue, as the SnapLists are recreated on the refresh since there is a page change.

Also, the rotarydetent listener is used to scroll sms in conversations (but not conversations list). The reason why is because the SnapList would scroll 1 element per element, making big messages unreadable. Also, it would make a weird scrolling feeling since it's not all list item that have the same height.

It was my first Gear S3/Tizen project ever, maybe you have some knowledge to share

Edit :

The Samsung Documentation for Wearable is very very incomplete. Do you know if there are methods such as AddItem/RemoveItem, etc on the ListView ? https://developer.tizen.org/ko/devel...idget_list.htm


Oh, sorry didn't realize it was you Anyway i have found the problem, snaplist disapears not because circle-helper is not recreating the snaplist on pagebeforeshow but because onReceiveCallback gets called after pagebeforeshow even more than once, so i swapped your circle-helper with mine and fired up updatesnaplist event at the end of onReceiveCallback. Sent the merge request.

And yes it is very incomplete and about the ListView, it has no js methods, none public at least. Here is the source for it.

Code:
    /*global window, define */
    /*
     * Copyright (c) 2015 Samsung Electronics Co., Ltd
     *
     * Licensed under the Flora License, Version 1.1 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *     http://floralicense.org/license/
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    /*jslint nomen: true */
    /**
     * # Listview Widget
     * Shows a list view.
     *
     * The list widget is used to display, for example, navigation data, results, and data entries. The following table describes the supported list classes.
     *
     * ## Default selectors
     *
     * Default selector for listview widget is class *ui-listview*.
     *
     * To add a list widget to the application, use the following code:
     *
     * ### List with basic items
     *
     * You can add a basic list widget as follows:
     *
     *      @example
     *         <ul class="ui-listview">
     *             <li>1line</li>
     *             <li>2line</li>
     *             <li>3line</li>
     *             <li>4line</li>
     *             <li>5line</li>
     *         </ul>
     *
     * ### List with link items
     *
     * You can add a list widget with a link and press effect that allows the user to click each list item as follows:
     *
     *      @example
     *         <ul class="ui-listview">
     *             <li>
     *                 <a href="#">1line</a>
     *             </li>
     *             <li>
     *                 <a href="#">2line</a>
     *             </li>
     *             <li>
     *                 <a href="#">3line</a>
     *             </li>
     *             <li>
     *                 <a href="#">4line</a>
     *             </li>
     *             <li>
     *                 <a href="#">5line</a>
     *             </li>
     *         </ul>
     *
     * ## JavaScript API
     *
     * Listview widget hasn't JavaScript API.
     *
     * @class ns.widget.wearable.Listview
     * @extends ns.widget.BaseWidget
     */
    (function (document, ns) {
        "use strict";
        var BaseWidget = ns.widget.BaseWidget,
                engine = ns.engine,
                Listview = function () {
                },
                prototype = new BaseWidget();

        /**
         * Dictionary for listview related events.
         * For listview, it is an empty object.
         * @property {Object} events
         * @member ns.widget.wearable.Listview
         * @static
         */
        Listview.events = {};

        /**
         * Build Listview
         * @method _build
         * @param {HTMLElement} element
         * @return {HTMLElement}
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._build = function (element) {
            return element;
        };

        prototype._init = function (element) {
            return element;
        };

        prototype._bindEvents = function (element) {
            return element;
        };

        /**
         * Refresh structure
         * @method _refresh
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._refresh = function () {
            return null;
        };

        /**
         * Destroy widget
         * @method _destroy
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._destroy = function () {
            return null;
        };

        Listview.prototype = prototype;
        ns.widget.wearable.Listview = Listview;

        engine.defineWidget(
                "Listview",
                ".ui-listview",
                [],
                Listview,
                "wearable"
                );
    }(window.document, ns));
The Following User Says Thank You to 10urshin For This Useful Post: [ View ] Gift 10urshin Ad-Free
16th February 2017, 04:53 AM |#8  
jamesst20's Avatar
OP Senior Member
Thanks Meter: 2,200
 
Donate to Me
More
Quote:
Originally Posted by 10urshin

Oh, sorry didn't realize it was you Anyway i have found the problem, snaplist disapears not because circle-helper is not recreating the snaplist on pagebeforeshow but because onReceiveCallback gets called after pagebeforeshow even more than once, so i swapped your circle-helper with mine and fired up updatesnaplist event at the end of onReceiveCallback. Sent the merge request.

And yes it is very incomplete and about the ListView, it has no js methods, none public at least. Here is the source for it.

Code:
    /*global window, define */
    /*
     * Copyright (c) 2015 Samsung Electronics Co., Ltd
     *
     * Licensed under the Flora License, Version 1.1 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *     http://floralicense.org/license/
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    /*jslint nomen: true */
    /**
     * # Listview Widget
     * Shows a list view.
     *
     * The list widget is used to display, for example, navigation data, results, and data entries. The following table describes the supported list classes.
     *
     * ## Default selectors
     *
     * Default selector for listview widget is class *ui-listview*.
     *
     * To add a list widget to the application, use the following code:
     *
     * ### List with basic items
     *
     * You can add a basic list widget as follows:
     *
     *      @example
     *         <ul class="ui-listview">
     *             <li>1line</li>
     *             <li>2line</li>
     *             <li>3line</li>
     *             <li>4line</li>
     *             <li>5line</li>
     *         </ul>
     *
     * ### List with link items
     *
     * You can add a list widget with a link and press effect that allows the user to click each list item as follows:
     *
     *      @example
     *         <ul class="ui-listview">
     *             <li>
     *                 <a href="#">1line</a>
     *             </li>
     *             <li>
     *                 <a href="#">2line</a>
     *             </li>
     *             <li>
     *                 <a href="#">3line</a>
     *             </li>
     *             <li>
     *                 <a href="#">4line</a>
     *             </li>
     *             <li>
     *                 <a href="#">5line</a>
     *             </li>
     *         </ul>
     *
     * ## JavaScript API
     *
     * Listview widget hasn't JavaScript API.
     *
     * @class ns.widget.wearable.Listview
     * @extends ns.widget.BaseWidget
     */
    (function (document, ns) {
        "use strict";
        var BaseWidget = ns.widget.BaseWidget,
                engine = ns.engine,
                Listview = function () {
                },
                prototype = new BaseWidget();

        /**
         * Dictionary for listview related events.
         * For listview, it is an empty object.
         * @property {Object} events
         * @member ns.widget.wearable.Listview
         * @static
         */
        Listview.events = {};

        /**
         * Build Listview
         * @method _build
         * @param {HTMLElement} element
         * @return {HTMLElement}
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._build = function (element) {
            return element;
        };

        prototype._init = function (element) {
            return element;
        };

        prototype._bindEvents = function (element) {
            return element;
        };

        /**
         * Refresh structure
         * @method _refresh
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._refresh = function () {
            return null;
        };

        /**
         * Destroy widget
         * @method _destroy
         * @protected
         * @member ns.widget.wearable.Listview
         */
        prototype._destroy = function () {
            return null;
        };

        Listview.prototype = prototype;
        ns.widget.wearable.Listview = Listview;

        engine.defineWidget(
                "Listview",
                ".ui-listview",
                [],
                Listview,
                "wearable"
                );
    }(window.document, ns));

Thank you, I have looked at your code, edited some stuffs and merged The issue is indeed fixed
The Following User Says Thank You to jamesst20 For This Useful Post: [ View ] Gift jamesst20 Ad-Free
16th February 2017, 05:20 AM |#9  
Senior Member
Thanks Meter: 496
 
More
This is really great, thanks for contributing to the gear community. Very cool.

I can't contribute any programming or help in that area at all, but I'd be happy to test things once you get to the point where you have an app I can sideload via normal processes on android. I think I can get Tizen studios loaded to put the app on my watch.

Oh, and one thing I've noticed, is that when replying to a group text on the watch you can't reply to everybody in the group, it just goes back to one person. With this app allow us to get around that limitation?

Sent from my SM-G935V using Tapatalk
16th February 2017, 05:51 AM |#10  
jamesst20's Avatar
OP Senior Member
Thanks Meter: 2,200
 
Donate to Me
More
Quote:
Originally Posted by Redflea

This is really great, thanks for contributing to the gear community. Very cool.

I can't contribute any programming or help in that area at all, but I'd be happy to test things once you get to the point where you have an app I can sideload via normal processes on android. I think I can get Tizen studios loaded to put the app on my watch.

Oh, and one thing I've noticed, is that when replying to a group text on the watch you can't reply to everybody in the group, it just goes back to one person. With this app allow us to get around that limitation?

Sent from my SM-G935V using Tapatalk

Hi,

The process is very simple, for the Android App, you can run Android Studio, open the project and run it on your phone. It's the same process with Tizen Studio for the Gear S3

As for group conversations, I must admit I have never done that by SMS and the current implementation will not even read those kind of conversations. However, I believe this is not something very hard to implement I would just need to figure out how I would display the names in such a small screen hehe. Maybe a scrolling test.

Thanks for the suggestion, let me know how your test attempt go

If it gets popular, I could consider once the application has more features to provide, to publish it on the store
16th February 2017, 08:29 AM |#11  
Senior Member
Thanks Meter: 496
 
More
Quote:
Originally Posted by jamesst20

Hi,

The process is very simple, for the Android App, you can run Android Studio, open the project and run it on your phone. It's the same process with Tizen Studio for the Gear S3

As for group conversations, I must admit I have never done that by SMS and the current implementation will not even read those kind of conversations. However, I believe this is not something very hard to implement I would just need to figure out how I would display the names in such a small screen hehe. Maybe a scrolling test.

Thanks for the suggestion, let me know how your test attempt go

If it gets popular, I could consider once the application has more features to provide, to publish it on the store

Thanks, installing Tizen Studio now.

Not sure - do I select a Tizen certificate or Samsung certificate (also using Tizen Studio to side-load the WatchMaker app on my watch).

As for the group SMS support, even if you could just show first names, that would work for 90% of people, I would think. Generally if you get a group SMS you're going to know the group from their first names by context pretty well...

Thanks.
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes