Giter Club home page Giter Club logo

virtual-joystick-android's Introduction

virtual-joystick-android

v1.10.1 (New version - support custom images, button & background size, limited direction, normalized coordinate, alpha border)

I created this very simple library as a learning process and I have been inspired by this project JoystickView (the author is a genius!)

This library provides a very simple and ready-to-use custom view which emulates a joystick for Android.

Alt text

Gist

Here is a very simple snippets to use it. Just set the onMoveListener to retrieve its angle and strength.

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

    ...

    JoystickView joystick = (JoystickView) findViewById(R.id.joystickView);
    joystick.setOnMoveListener(new JoystickView.OnMoveListener() {
        @Override
        public void onMove(int angle, int strength) {
            // do whatever you want
        }
    });
}

The angle follow the rules of a simple counter-clock protractor. The strength is percentage of how far the button is from the center to the border.

Alt text

By default the refresh rate to get the data is 20/sec (every 50ms). If you want more or less just set the listener with one more parameters to set the refresh rate in milliseconds.

joystick.setOnMoveListener(new JoystickView.OnMoveListener() { ... }, 17); // around 60/sec

Attributes

You can customize the joystick according to these attributes JV_buttonImage, JV_buttonColor, JV_buttonSizeRatio, JV_borderColor, JV_borderAlpha, JV_borderWidth, JV_backgroundColor, JV_backgroundSizeRatio, JV_fixedCenter, JV_autoReCenterButton, JV_buttonStickToBorder, JV_enabled and JV_buttonDirection

If you specified JV_buttonImage you don't need JV_buttonColor

Here is an example for your layout resources:

<io.github.controlwear.virtual.joystick.android.JoystickView
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    custom:JV_buttonColor="#FF6E40"
    custom:JV_buttonSizeRatio="15%"
    custom:JV_borderColor="#00796B"
    custom:JV_backgroundColor="#009688"
    custom:JV_borderWidth="4dp"
    custom:JV_fixedCenter="false"/>

Image

If you want a more customized joystick, you can use JV_buttonImage and the regular background attributes to specify drawables. The images will be automatically resized.

<io.github.controlwear.virtual.joystick.android.JoystickView
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/joystick_base_blue"
    custom:JV_buttonImage="@drawable/ball_pink"/>

Alt text

SizeRatio

We can change the default size of the button and background. The size is calculated as a percentage of the total width/height.

By default, the button is 25% (0.25) and the background 75% (0.25), as the first screenshot above.

If the total (background + button) is above 1.0, the button will probably be a bit cut when on the border.

<...
    custom:JV_buttonSizeRatio="50%"
    custom:JV_backgroundSizeRatio="10%"/>
joystick.setBackgroundSizeRatio(0.5);
joystick.setButtonSizeRatio(0.1);

The background size is not working for a custom picture.

FixedCenter or Not? (and auto re-center)

If you don’t set up this parameter, it will be FixedCenter by default, which is the regular behavior.

However, sometimes, it is convenient to have an auto-defined center which will be defined each time you touch down the screen with your finger (center position will be limited inside the JoystickView’s width/height). As every parameter you can set it up in xml (as above) or in Java:

joystick.setFixedCenter(false); // set up auto-define center

UnfixedCenter (set to false) is particularly convenient when the user can’t (or doesn’t want to) see the screen (e.g. a drone's controller).

We can also remove the automatically re-centered button, just set it to false.

joystick.setAutoReCenterButton(false);

(The behavior is a bit weird if we set remove both the FixedCenter and the AutoReCenter.)

Enabled

By default the joystick is enabled (set to True), but you can disable it either in xml or Java. Then, the button will stop moving and onMove() won’t be called anymore.

joystick.setEnabled(false); // disabled the joystick
joystick.isEnabled(); // return enabled state

ButtonDirection

By default the button can move in both direction X,Y (regular behavior), but we can limit the movement through one axe horizontal or vertical.

<...
    custom:JV_buttonDirection="horizontal"/>

In the layout file (xml), this option can be set to horizontal, vertical or both.

We can also set this option in the Java file by setting an integer value:

  • any negative value (e.g. -1) for the horizontal axe
  • any positive value (e.g. 1) for the vertical axe
  • zero (0) for both (which is the default option)
joystick.setButtonDirection(1); // vertical

Wearable

If you use this library in Wearable app, you will probably disable the Swipe-To-Dismiss Gesture and implement the Long Press to Dismiss Pattern, which could be a problem for a Joystick Pattern (because we usually let the user touch the joystick as long as she/he wants), in that case you can set another convenient listener: OnMultipleLongPressListener which will be invoked only with multiple pointers (at least two fingers) instead of one.

joystick.setOnMultiLongPressListener(new JoystickView.OnMultipleLongPressListener() {
    @Override
    public void onMultipleLongPress() {
        ... // eg. mDismissOverlay.show();
    }
});

Or better, if you just want a simple Joystick (and few other cool stuff) as a controller for your mobile app you can use the following related project ;)

Demo

For those who want more than just a snippet, here is the demo :

If you want to add your project here, go ahead :)

Required

Minimum API level is 16 (Android 4.1.x - Jelly Bean) which cover 99.5% of the Android platforms as of October 2018 according to the distribution dashboard.

Download

Gradle

compile 'io.github.controlwear:virtualjoystick:1.10.1'

Contributing

If you would like to contribute code, you can do so through GitHub by forking the repository and sending a pull request. When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible.

License

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

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.

Authors

virtual-joystick-android is an open source project created by @makowildcat (mostly spare time) and partially funded by Black Artick and NSERC.

Also, thanks to Bernix01, teancake, Spettacolo83, djjaysmith, jaybkim1, sikrinick, AlexandrDavydov, indrek-koue, QitmentX7, esplemea, FenixGit, AlexanderShniperson and GijsGoudzwaard for contributing.

virtual-joystick-android's People

Contributors

bernix01 avatar makowildcat avatar teancake 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virtual-joystick-android's Issues

Thank you!

Just wanna leave feedback.
Thank you for your work and component.
Everything work great. I'm using it for my UTV offroad remote machine.

How to use ?

I'm sorry but I can't manage to include this lib into my android project, can someone provide detailled instructions about the installation process?

Attempt to invoke virtual method 'void JoystickView.setOnMoveListener(JoystickView.OnMoveListener)' on a null object reference

I added JoystickView java file into my project and some few other things like mentioned here.
I added following lines after .oncreate of my Main activity.

JoystickView joystick = (JoystickView) findViewById(R.id.joystickView);
        joystick.setOnMoveListener(new JoystickView.OnMoveListener() {
            @Override
            public void onMove(int angle, int strength) {
                
            }
        });

Not sure what is the problem here.

fixedCenter false problem

Hello, dear friend!
I want use your awesome library! And i need your help! Because I need the button not to return to the center.
I try attribute:
custom:JV_fixedCenter="false"
joystick.setFixedCenter(false);
But it didn't work.
Great thanks in advanced for help!

Locked Joystick Not Returning Direction

When using...
custom:JV_buttonDirection="horizontal"
the joystick onMoveListener(int angle, int strength) always returns angle=~100, strength=0
The angle is 0 at center and 100 at both sides, instead of eg left to right

(left) -100 .. 0 .. 100 (right)

So how can i know which direction the user was pushing the handle in (left or right)?

Change joystick position programmatically at run-time?

Is it possible to change the joystick's location from the java code? I am planning on using a Bluetooth joystick to map to the virtual joystick on my phone. But I'm unable to change the position of the joystick programmatically. Is there a way for you to add a method for us to change the position programmatically?

Thanks for this great library :D

Use drawable picture for background and stick button

Hello there,
thank you for your wonderful class.
I'm trying to use it for my drone app.
Is there a way to customize background image and stick button image?
If I remove "custom:JV_" values in layout xml and just add android:background="@drawable/my_picture", I see only the background picture but I think there is not a way to modify the stick button image.
Thank you for your help!

Setting Button position when onCreate()

Hello, I thank you again for making this awesome library.
(I thought I starred this, but i guess i haven't, so I just starred it!)

Is there a way to set the position of the button to certain angle when app loads?
As far as I know, there is no method that has the function to configure it.
I know joystick is usually configured to center, but my project requires to configure the button at
90 degree.

Also, to extend the above question, i just want to know if it is possible to set the button ONLY movable around the outer circle line?

Is it possible to give an option to set mCenterX and mCenterY to be the X and Y positions of the initial touch?

This is a great library and I am now using it in my app to control a quadcopter's thrust and yaw angle. But gradually I found a problem.

Each time I touch the joystick on the screen, I wish the angle and the strength to be 0. Despite very careful touches, the two values were scarcely 0 and my quadcopter was disturbed by this initial nonzero touch.

If the mCenterX and mCenterY are defined at the initial touch position, then there is no need to touch the exact centre of the circle each time. Most importantly, it liberates the eyes from the touch screen and allows for blind touches and move.

A responsive region may need to be defined accordingly, since we don't want the whole screen to respond to a single joystick, and there may be multiple joysticks on one screen.

I am not sure whether this make sense, but thanks in advance if you could kindly consider it.

Border color alpha bug

Hello

It looks like i found bug and haven't idea how to fix that.
Bug is related to setting Alpha for border color and at runtime it looks like Border object doubles itself, first with alpha and next one without alpha channel.
Steps to reproduce

        mPaintCircleBorder.setColor(borderColor);
        mPaintCircleBorder.setAlpha(125);

# Configuring angle and strength position

Hi,

Is it possible for you to add a function to control where users are able to set angle and strength?
In other words, users can configure positions of angle and strength on their needs.

For example, the image below angle 90 is currently positioned to the top, but i want angle 0 to be positioned to the top, and angle 90 to the right side of the circle.

virtual-joystick

Things to consider

I have used your library in building my controller app, and it is quite amazing. That being said, there are two things that I am uncertain about in your library.

The first is how you handle the very first touch event on the joystick. If I have selected the joystick to always be fixed to the center and I touch the joystick the first time at 320 degrees and a strength of 20, I would imagine the joystick should still read in 0, 0 because that was my first ever touch event, and should not register it as I have not yet shifted the joystick at all. However, that event is read in and processed. The reason I bring this up is if you have a dead band on the joystick so that there is no movement within a certain strength, then by touching the joystick the very first time greater than the created dead band will register the motion.

The second thing to consider is I have been trying to use the isActivated() function you have supplied, however it seems to me that it is never returning true. I assumed it would be true if I am moving the joystick around, thus activating it, but perhaps I am wrong in the interpretation of what that function returns. I am looking for a way to register when a user has touched your joystick and then also when a user has let go of the joystick.

Please let me know your thoughts, thanks!

Allow JotstickView to be disabled

Hi,

This is a great class and just what I was looking for, thanks. But I do have one issue where it is not currently not possible to disable to JoystickView.

It would be good to be able to call joystickView.setEnabled(false) so that the view can not be used at all. So that it cannot be moved and onMove() is not called.

DJ

PS. A simple demo app would also have been good in getting started.

Custom values for joystick movement

Hello,
I wanna use your library, but I want to use custom values, like I don't want to use Angle/Strength.

For each axis I want a max and a min value, Is this possible? If yes then how?

Thanks.

Lower minimal API level

Hello,
As I wanted to use the project, I noticed that the minimal API level is 19 but mine was set at 16. I believe you could just lower it without any drawback, or otherwise maybe specify that in the Readme.
Versions 16-18 represent around 5% of the users so I didn't want to set it to 19 (src: https://developer.android.com/about/dashboards/index.html)

(By the way, thanks for the joystick, I just downloaded the class directly and put the code instead, works great!)

Reset button position only appears to be working from within setOnMoveListener

Firstly some basic information about the App Gradle setup:

compileSdkVersion 30
buildToolsVersion '29.0.2'
defaultConfig {
    minSdkVersion 24
    targetSdkVersion 30
    ...
}

Secondly the dependency of this library currently used:
implementation 'io.github.controlwear:virtualjoystick:1.10.1'

The problem

It appears that when calling .resetButtonPosition on a JoystickView as such:
joystickView.resetButtonPosition();

It does not in fact reset the position.

How it is being used

Right now I am calling the reset button position method through an onClick of a different onscreen button. Essentially what it aims to do is that when one joystick has the auto recenter button set to false the button exists to be able to basically "reset it" back to center. But this does not work.

I am using this method to set autoReCenter to false:
joystickView.setAutoReCenterButton(isSticky);
Where "isSticky" is just a boolean that is confirmed to be toggling correctly from true/false as it does in fact change the joystick behaviour accordingly.

I have noticed that the behaviour of the joystick does not change onClick unless the setOnMoveListener is re-instantiated and perhaps that can be cause of the issues.

Full code example

JoystickView rightJoystick = findViewById(R.id.rightJoystick);

Button autoRecenterButton = findViewById(R.id.joystick_sticky);

autoRecenterButton.setOnClickListener(new View.OnClickListener() {

    boolean isSticky = false;

    @Override
    public void onClick(View v) {
        isSticky = !isSticky;

        // This works correctly
        rightJoystick.setAutoReCenterButton(isSticky);

        // This does not appear to work correctly
        rightJoystick.resetButtonPosition();

        // A new listener needs to be set when button was toggled
        // in order to change the auto recenter behaviour
        rightJoystick.setOnMoveListener((angle, strength) -> {
            // do joystick things
        }, 25);
    }
});

Desired outcome

For the other on screen button to toggle whether or not the joystick is sticky but then if doing from "non-sticky" to "sticky" it needs to also reset the position of the joystick back to center.

[Issue Error - In need of owner removal]

I finally managed to get this thing working. I will share the code later.

I have managed to import it as a module but i cannot find the joystick in the layout editor to place it :(

Originally posted by @WiccyShackleton in #29 (comment)

You should add in via text in the XML file of the Activity in which you want to use it

Change DEFAULT_LOOP_INTERVAL

The DEFAULT_LOOP_INTERVAL is too fast for my Arduino.

Is it possible to increase this value? File JoystickView.java is read only?

JV_buttonSizeRatio in example issue

Hi,
In example it is mentioned, that we can specify buttonSizeRatio as a float:
custom:JV_buttonSizeRatio="0.15"
When actually it is expected to receive a fraction, as it is mentioned in attrs.xml:

Can you fix readme, plz?

It is possible to have strength > 100

When the user touches the joystick without dragging it to the maximum possible value or more, the strength obtained in the OnMoveListener can be greater than 100.

I think it's probably when the touch point is farther from the joystick center than the maximum value of the button center.
Tested with a single axis and version 1.10.1.

Sorry if it's not clear or if my english is bad.

Initial value with getNormalizedX() or Y is 0

Like the title says, when I haven't touched the joystick and use getNormalizedX() or getNormalizedY() the value is 0 instead of 50. This is my xml:

<io.github.controlwear.virtual.joystick.android.JoystickView
                xmlns:custom="http://schemas.android.com/apk/res-auto"
                android:id="@+id/joystick"
                android:layout_width="180dp"
                android:layout_height="180dp"
                custom:JV_autoReCenterButton="true"
                custom:JV_backgroundColor="#20000000"
                custom:JV_backgroundSizeRatio="70%"
                custom:JV_buttonColor="#000000"
                custom:JV_buttonSizeRatio="30%" />

idea: onClick execute condition adjustable (not much effort)

It would be quite usefull to have to possibilty to disable the execution of the onClick function on first touch / last touch (JoystickView.java line 451 and 467)
I had the issue that this behaviour led to a double execution on touch start / end which crashed my http connection, which couldn't handle these close executions.
Please just add a function to disable these 2 extra executions if needed.

How Do I Deal With Attributes?

I put compile 'io.github.controlwear:virtualjoystick:1.2.0' in my build.gradle, and

I have the following code in my activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorAccent"
    tools:context="com.example.jayb.joystickexample.MainActivity">

    <TextView
        android:id="@+id/angle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="angle:"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="59dp"
        android:layout_marginTop="34dp" />

    <TextView
        android:id="@+id/strength"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="strength:"
        android:layout_below="@+id/angle"
        android:layout_marginStart="59dp"
        android:layout_marginTop="10dp"
        />

 <io.github.controlwear.virtual.joystick.android.JoystickView
        android:id="@+id/joystickView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginBottom="122dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        custom:JV_buttonColor="#FF6E40"
        custom:JV_borderColor="#00796B"
        custom:JV_backgroundColor="#009688"
        custom:JV_borderWidth="4dp"
        custom:JV_fixedCenter="false"
        />
</RelativeLayout>

I do not know how to deal with these lines of custom:JV_buttonColor, custom:JV_borderColor, custom:JV_backgroundColor, custom:JV_borderWidth, custom:JV_fixedCenter

How do I deal with those attributes?

I am trying to make the same .xml(design) as below image. I tried to find the .xml in your project, but it seems like there isn't one.

android-virtual-joystick-custom-image

have problem "Could not find io.github.controlwear:virtualjoystick:1.10.1."

I tried to find solution in google. How to solve? Thank you

Edit: I found Solution just add repo in build.gradle

Executing tasks: [:app:assembleDebug] in project /Users/poj/AndroidStudioProjects/MyApplication

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:checkDebugAarMetadata FAILED
> Task :app:generateDebugResValues UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:mergeDebugResources FAILED
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest FAILED
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:mergeDebugShaders UP-TO-DATE
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets FAILED
> Task :app:processDebugJavaRes NO-SOURCE
> Task :app:checkDebugDuplicateClasses FAILED
> Task :app:desugarDebugFileDependencies FAILED
> Task :app:mergeDebugJniLibFolders UP-TO-DATE
> Task :app:mergeDebugNativeLibs FAILED
> Task :app:validateSigningDebug UP-TO-DATE
> Task :app:writeDebugAppMetadata UP-TO-DATE
> Task :app:writeDebugSigningConfigVersions

FAILURE: Build completed with 7 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

3: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

4: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeDebugAssets'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

5: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

6: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:desugarDebugFileDependencies'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

7: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeDebugNativeLibs'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find io.github.controlwear:virtualjoystick:1.10.1.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
       - https://repo.maven.apache.org/maven2/io/github/controlwear/virtualjoystick/1.10.1/virtualjoystick-1.10.1.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
19 actionable tasks: 8 executed, 11 up-to-date

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.