GithubHelp home page GithubHelp logo

linkedin / shaky-android Goto Github PK

View Code? Open in Web Editor NEW
160.0 160.0 50.0 502 KB

Shake to send feedback for Android.

License: Apache License 2.0

Java 100.00%
android android-library feedback linkedin

shaky-android's People

Contributors

advait8 avatar akalra avatar build3r avatar cckroets avatar chao2zhang avatar csv8674xn avatar devansh111 avatar drewhannay avatar kahrendsen-li avatar kkoser avatar li-advait avatar mockitoguy avatar nhibner avatar nickav avatar tesiawu avatar tianleisun avatar xizzhu 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

shaky-android's Issues

No way to set sensitivity of underlying ShakeDetector

Seismic exposes an API to set sensitivity of the shake detector:
https://github.com/square/seismic/blob/master/library/src/main/java/com/squareup/seismic/ShakeDetector.java#L109

This helps, because some devices need a fairly vigorous shake to trigger the shake detector:
square/seismic#7

Unfortunately, Shaky exposes no corresponding API. Happy to submit a PR, but not sure which of several options makes the most sense in the larger context:

  1. Make Shaky aware to sensitivity thresholds, and implement them by calling the relevant Seismic API
  2. Make Shaky independent of all Seismic configuration, and expose an API that allows swapping out the ShakeDetector used by Shaky

For Option 2, users could create their own ShakeDetector (with their own sensitivity, or whatever other knobs Seismic later exposes), and install it in Shaky. There's a tiny bit of thought required to make sure we hook listeners / lifecycle methods correctly. However, unless we introduce an adapter layer of some form, Shaky now becomes very dependent on Seismic classes (which is currently just an internal implementation detail, and not part of the contract).

Thoughts?

Ankur

Support for Oauth / user accounts

It'd be super cool if this could support signing a user into a service and rendering it on the FormFragment: email, Trello, Jira, Github, Google, etc.

Is there any alternative shortcut instead of SHAKE?

Hi, I just found this project via Google search, it cool!

I wanna to find some tools which could help our QA team to report bugs, and this project look nice.

However the app we're developing currently would use the SHAKE as a feature( like, shake to reading random post). I was wondering if maybe we could use any alternative shortcut instead?

App crash during Feedback

The app crashes when we click on submit feed back because the device does not support hardware bitmaps.
Please allow to disable hardware acceleration or disable the screenshot functionality completely.
Device: Xiaomi Redmi 6 Pro
Os: 8.1.0, MIUI Global 10.0
Logs:

    java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps
        at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:532)
        at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:62)
        at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:120)
        at android.graphics.Canvas.drawBitmap(Canvas.java:1434)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
        at coil.drawable.CrossfadeDrawable.draw(CrossfadeDrawable.kt:69)
        at android.widget.ImageView.onDraw(ImageView.java:1367)
        at android.view.View.draw(View.java:19226)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5030)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4429)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at androidx.core.widget.NestedScrollView.draw(NestedScrollView.java:1998)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19229)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.java:235)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.java:223)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
2020-11-17 13:33:17.681 28782-28782/**** E/Falcon:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at com.android.internal.policy.DecorView.draw(DecorView.java:791)
        at com.jraska.falcon.Falcon.drawRootToBitmap(Falcon.java:177)
        at com.jraska.falcon.Falcon.drawRootsToBitmap(Falcon.java:162)
        at com.jraska.falcon.Falcon.takeBitmapUnchecked(Falcon.java:127)
        at com.jraska.falcon.Falcon.takeScreenshotBitmap(Falcon.java:90)
        at com.linkedin.android.shaky.Shaky.getScreenshotBitmap(Shaky.java:226)
        at com.linkedin.android.shaky.Shaky.doStartFeedbackFlow(Shaky.java:143)
        at com.linkedin.android.shaky.Shaky.access$100(Shaky.java:49)
        at com.linkedin.android.shaky.Shaky$1.onReceive(Shaky.java:259)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:171)
        at android.app.ActivityThread.main(ActivityThread.java:6651)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
2020-11-17 13:33:17.725 28782-28782/**& D/AndroidRuntime: Shutting down VM
2020-11-17 13:33:17.728 28782-28782/***E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ***, PID: 28782
    java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps
        at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:532)
        at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:62)
        at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:120)
        at android.graphics.Canvas.drawBitmap(Canvas.java:1434)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
        at coil.drawable.CrossfadeDrawable.draw(CrossfadeDrawable.kt:69)
        at android.widget.ImageView.onDraw(ImageView.java:1367)
        at android.view.View.draw(View.java:19226)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5030)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4429)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19229)
        at androidx.core.widget.NestedScrollView.draw(NestedScrollView.java:1998)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19229)
        at android.view.View.draw(View.java:19096)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.java:235)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.java:223)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
        at android.view.View.draw(View.java:19094)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4240)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4024)
2020-11-17 13:33:17.729 28782-28782/*** E/AndroidRuntime:     at android.view.View.draw(View.java:19229)
        at com.android.internal.policy.DecorView.draw(DecorView.java:791)
        at com.linkedin.android.shaky.Utils.capture(Utils.java:110)
        at com.linkedin.android.shaky.Shaky.getScreenshotBitmap(Shaky.java:231)
        at com.linkedin.android.shaky.Shaky.doStartFeedbackFlow(Shaky.java:143)
        at com.linkedin.android.shaky.Shaky.access$100(Shaky.java:49)
        at com.linkedin.android.shaky.Shaky$1.onReceive(Shaky.java:259)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
        at androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:171)
        at android.app.ActivityThread.main(ActivityThread.java:6651)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)```

google map screenshot

Hi!
If i send a feedback when i use google map, instead of the map the app send a black image.

Dialog button text color is not visible

Hey, im trying to use this library, but the values you are using are conflicting with my app theme and i cant find a way to change the color.
image

Im using dayNight material theme, these values im overriding in order to fix it:

    <item name="alertDialogTheme">@style/AlertDialog</item>
    <item name="shakyPopupButtonColor">@color/purple_70</item>
     <item name="shakyAlertDialogTheme">@style/AlertDialog</item>
     <item name="shakyTitleColor">@color/text_main</item>
     <item name="shakyContentColor">@color/text_subtitle</item>
      <item name="android:textColor">@color/purple_70</item>
      
     <style name="AlertDialog" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
        <item name="colorAccent">@color/purple_70</item>
        <item name="buttonBarNegativeButtonStyle">@style/Widget.Dialog.NegativeButton</item>
        <item name="buttonBarPositiveButtonStyle">@style/Widget.Dialog.PositiveButton</item>
    </style>

  <style name="Widget.Dialog.NegativeButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
        <item name="android:textColor">@color/purple_70</item>
    </style>

    <style name="Widget.Dialog.PositiveButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
        <item name="android:textColor">@color/purple_70</item>
    </style>

Is there a way to fix it? I cant find any configuration thats working,

Allow views to be theme-able

In order to match the look and feel of other apps, shaky should allow users to customize the looks of all the views.

Exception on Android S API 31 re permission HIGH_SAMPLING_RATE_SENSORS

Shaky v3.02 depends on Seismic which fails on the upcoming Android OS API 31 unless the HIGH_SAMPLING_RATE_SENSORS permission is set, but this permission is discouraged.

I do not know if Shaky can operate at a lower sensor sampling rate and perhaps this permission is required to use Shaky with API 31+, but alternatively, Seismic looks like it may be adding an API to set the sampling level that Shaky could use:

square/seismic#25
square/seismic#24

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.