GithubHelp home page GithubHelp logo

google / watchpresenter Goto Github PK

View Code? Open in Web Editor NEW
23.0 7.0 15.0 6.37 MB

Pass your slides on Google Drive using your phone or watch

Home Page: http://watchpresenter.zuluindia.com

License: Apache License 2.0

Java 71.72% JavaScript 15.27% HTML 10.53% CSS 2.47%

watchpresenter's Introduction

WatchPresenter is an application that let's you control Google Slides from either your SmartWatch or your SmartPhone.

Note: This is not an official Google product and is not supported by Google in any way.

How it works

The application uses two components to perform its task:

  • A Chrome extension
  • A mobile app

Users can signal a slide change by several means:

  • Tapping on the phone screen
  • Clicking on the phone's volume buttons
  • Tapping on their Android Wear SmartWatch

The latter two methods do not require the phone screen to be on, hence saving battery and preventing unintentional slide changes.

Whenever the user signals a slide change, the mobile app sends a message to the Chrome extension by using Google Cloud Messaging system. An identifier is used, so that messages from the app are sent to the appropriate destination (the Chrome browser of the user). The identifier is based on the Google Account name, so the user must use the same Google Account on both the browser and the phone.

Modules and file structure

On the project root you will find the following folders:

  • 'android': Contains the android App source code. It is an Android Studio project (Gradle build).
  • 'chrome': Contains the source code for the Chrome extension. See README file in that folder for more info.
  • 'resources': Contains other resources such as icons, etc. Both in source and binary forms.

Licensing and Contributing

For licensing info, please refer to LICENSE file in this folder.

If you want to contribute to the project, please read the CONTRIBUTING file.

watchpresenter's People

Contributors

grant avatar pgilmon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

watchpresenter's Issues

Unable to detect Chrome Extension

Hi all,

I've installed Watchpresenter 2.0.5 onto my Galaxy S6 running Android 5.1.1 and the Chrome extension version 3.3 onto my laptop version of Chrome. When I open the Google slides deck I see the Watchpresenter icon come up at the far right of my address bar, but my phone does not detect the Chrome extension. Both my laptop and phone are on wifi and able to access other internet services normally.

Any ideas?

Alasdair

Edit: I am signed into my Galaxy S6 and Chrome browser under the same Google account

https://photos.google.com/photo/AF1QipOyqjai6IUOgofDhPlRVghva4rGAItpqusoa3i
screenshot_2015-07-15-12-11-53
_

Potential issue for integer overflow

Hi

I've found a following suspicious code in android/WatchPresenter/backend/src/main/java/com/zuluindia/watchpresenter/backend/Cleanup.java

In Line 60:
private static final long EXPIRY_MILLISECONDS=63 * 24 * 3600* 1000;

Could this be as follow to avoid integer overflow?:
private static final long EXPIRY_MILLISECONDS=63 * 24 * 3600* 1000L;

This might be a trivial thing but I wanted to report just in case.

Thanks!

FR: Avoid app volume change

Some ideas...

@OverRide public boolean onKeyDown(int keyCode, KeyEvent event){ if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){ Toast.makeText(this, "Volume Up", Toast.LENGTH_LONG).show(); return true; } if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ Toast.makeText(this, "Volume Down", Toast.LENGTH_LONG).show(); return true; } return super.onKeyDown(keyCode, event); }

FR: Stop passing slides when call is active

In the event of a call, the user is probably not presenting anymore. However, volume key presses are detected if the application is active. This might lead to unwanted slide pass.

Null checks for method return values are missing

intent.getAction() may be null

if (intent.getAction().equals(MainActivity.ACTION_STOP_MONITORING)) {

data.getExtras() may be null


(Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE");

Throw in Finally

Any exceptions thrown from the try or catch segments are eliminated when an exception is thrown in the finally block

try{
ois = new ObjectInputStream(new BufferedInputStream(
context.getResources().openRawResource(R.raw.model)));
method = (MLRegression) ois.readObject();
helper = (NormalizationHelper) ois.readObject();
}
catch (ClassNotFoundException e){
throw new IOException("Could not read object from stream", e);
}
finally {
if(ois != null){
ois.close();
}
}

Security Policy violation Binary Artifacts

This issue was automatically created by Allstar.

Security Policy Violation
Project is out of compliance with Binary Artifacts policy: binaries present in source code

Rule Description
Binary Artifacts are an increased security risk in your repository. Binary artifacts cannot be reviewed, allowing the introduction of possibly obsolete or maliciously subverted executables. For more information see the Security Scorecards Documentation for Binary Artifacts.

Remediation Steps
To remediate, remove the generated executable artifacts from the repository.

Artifacts Found

  • android/WatchPresenter/watchpresenterwear/libs/encog-java-core-master.jar

Additional Information
This policy is drawn from Security Scorecards, which is a tool that scores a project's adherence to security best practices. You may wish to run a Scorecards scan directly on this repository for more details.


Allstar has been installed on all Google managed GitHub orgs. Policies are gradually being rolled out and enforced by the GOSST and OSPO teams. Learn more at http://go/allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.