linkedin / shaky-android Goto Github PK
View Code? Open in Web Editor NEWShake to send feedback for Android.
License: Apache License 2.0
Shake to send feedback for Android.
License: Apache License 2.0
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:
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
I'm trying to update to the last version, but gradle can't resolve the version 2.0.1.
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.
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?
It would be great if the Shaky API also exposed a way to initiate feedback through code as well as by shaking :)
If the user rotates the device while drawing, the paths are not translated. Possible fixes are: translating the paths accordingly or preventing the Paper view from being rotated while drawing.
The DrawFragment should not override the original imageUri, but instead copy it to a new uri to allow undoing a drawing after it has been saved.
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)```
Hi!
If i send a feedback when i use google map, instead of the map the app send a black image.
Create a customized email fragment
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.
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,
In order to match the look and feel of other apps, shaky should allow users to customize the looks of all the views.
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:
The way screenshots are taken doesn't capture popups (needs verification). This library provides a way to do that: https://github.com/jraska/Falcon
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.