An app performance monitor(APM) , like "Android Studio profiler", you can easily monitor the performance of your app real time in browser

Overview

AndroidGodEye


English README.md    中文 README_zh.md

Android developer lack of monitoring of performance data,especially in production environment. so we need "AndroidGodEye".

Overview

android_godeye_connect

AndroidGodEye is a performance monitor tool for Android(not limited to performance data) , you can easily monitor the performance of your app in real time in pc browser.

You can also use it in production environment to monitor the online performance of your app(Apply AndroidGodEye for production).

AndroidGodEye has been applied to several mature apps at present

It is divided into 3 parts:

  1. Core provide all performance modules and produce performance datas.
  2. Debug Monitor provide a dashboard to show these performance datas.
  3. Toolbox make developers easy to use this library.

Features

Module Name Desc
CPU Cpu info of device and app
BATTERY Battery info
FPS Fps info
LEAK_CANARY Memory leak detector base on LeakCanary and Shark
HEAP Heap memory
PSS Pss
RAM Ram
NETWORK Network info
SM Detect jam
STARTUP Startup metric
TRAFFIC Traffic of device and app
CRASH Detect java、native crash and ANR
THREAD Thread dump of app
PAGELOAD Page(Activity and Fragment) lifecycle event and cost time
METHOD_CANARY Methods time cost metric
APP_SIZE App size of apk code、storage and cache
VIEW_CANARY Detect complex layout hierarchy and overdraw
IMAGE_CANARY Detect unreasonable memory use of image

Usage

Quickstart Wiki

Changelog

More detail Wiki

Sample APK

Demo Project and APK

License

AndroidGodEye is under Apache2.0.

Contributors

About Me

Comments
  • 打开控件就崩溃

    打开控件就崩溃

    app已经可以启动起来了,但是点击控件就崩溃,GodEyeMonitor.work(this);放到了application onCreate里,没有放到activity里,另外,浏览器查看性能数据,cpu无输出,heap、trafic、ram、pss都有输出,所有的监控项都install了,求指导,AndroidGodeye 1.7.4

    02-11 16:57:54.037 19047-19047/com.testerclub.demo.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.testerclub.demo.test, PID: 19047 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.testerclub.demo.test/com.testerclub.core.base.PTWebViewActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2394) at android.app.ActivityThread.access$800(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5276) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706) Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:302) at android.app.Activity.requestWindowFeature(Activity.java:3656) at com.testerclub.TC.h5.activity.TCWebViewActivity.initView(TCWebViewActivity.java:46) at com.testerclub.TC.h5.activity.TCWebViewActivity.onCreate(TCWebViewActivity.java:41) at com.testerclub.core.base.BaseOfflineHybridActivity.onCreate(BaseOfflineHybridActivity.java:84) at com.testerclub.core.base.PTWebViewActivity.onCreate(PTWebViewActivity.java:25) at android.app.Activity.performCreate(Activity.java:6041) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1109) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2285) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2394)  at android.app.ActivityThread.access$800(ActivityThread.java:154)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5276)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706) 

    opened by testerclub 11
  • there is nothing for 3.1.2 about godeye-xcrash and godeye-leakcanary

    there is nothing for 3.1.2 about godeye-xcrash and godeye-leakcanary

    Could not resolve cn.hikyson.godeye:godeye-leakcanary:3.1.2: image Could not resolve cn.hikyson.godeye:godeye-xcrash:3.1.2: image

    but you say 其次你的项目需要迁移至androidx,从版本3.1.3开始AndroidGodEye迁移到了androidx,如果你的项目没有使用androidx,那么只能使用3.1.2及以下版本: image

    and 3.1.1、3.1.0 is same to 3.1.2

    opened by taishuhongye 6
  • MethodCanaryTransform This feature requires ASM6

    MethodCanaryTransform This feature requires ASM6

    Execution failed for task ':app:transformClassesWithMethodCanaryTransformForDebug'.

    This feature requires ASM6

    Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.

    opened by muxi166 5
  • THREAD的数据消费时会crash

    THREAD的数据消费时会crash

      GodEye.instance().observeModule(GodEye.ModuleName.THREAD, new Consumer<ThreadInfo>() {
            @Override
            public void accept(ThreadInfo threadInfo) throws Exception {
                mConsumer.accept(GodEye.ModuleName.THREAD, threadInfo);
            }
        });
    

    03-20 04:23:17.341 16128 16148 E AndroidRuntime: io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.util.ArrayList cannot be cast to cn.hikyson.methodcanary.lib.ThreadInfo 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:201) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at java.lang.Thread.run(Thread.java:761) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to cn.hikyson.methodcanary.lib.ThreadInfo 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at com.douban.frodo.eye.Eye$18.accept(Eye.java:187) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63) 03-20 04:23:17.341 16128 16148 E AndroidRuntime: ... 9 more

    opened by BetterIgor 5
  • 在三星s8上,Android 7.0,level 24  ROM  samsung/dreamltexx  CPU架构  arm64-v8a 会造成崩溃

    在三星s8上,Android 7.0,level 24 ROM samsung/dreamltexx CPU架构 arm64-v8a 会造成崩溃

    java.lang.RuntimeException:Unable to create application com.saic.cmp.business.CMPApplication: java.lang.IllegalStateException: can not call install leak

    2 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5973) 3 ...... 4 Caused by: 5 java.lang.IllegalStateException:can not call install leak 6 cn.hikyson.godeye.core.internal.modules.leakdetector.LeakDetector.install(LeakDetector.java:49) 7 cn.hikyson.godeye.core.internal.modules.leakdetector.LeakDetector.install(LeakDetector.java:24) 8 cn.hikyson.godeye.core.GodEye.install(GodEye.java:47) 9 com.saic.cmp.business.CMPApplication.onCreate(CMPApplication.java:150) 10 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1032) 11 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5970) 12 android.app.ActivityThread.-wrap3(ActivityThread.java) 13 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710) 14 android.os.Handler.dispatchMessage(Handler.java:102) 15 android.os.Looper.loop(Looper.java:154) 16 android.app.ActivityThread.main(ActivityThread.java:6776) 17 java.lang.reflect.Method.invoke(Native Method) 18 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 19 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

    opened by humanheima 5
  • 引入工程后不能识别godeye

    引入工程后不能识别godeye

    引入工程后,报godeye相关的class不能识别,不知道哪里姿势不对。这些install的class都是红色 GodEye.instance().install(Cpu.class, new CpuContextImpl()) .install(Battery.class, new BatteryContextImpl(this)) .install(Fps.class, new FpsContextImpl(this)) .install(Heap.class, Long.valueOf(2000)) .install(Pss.class, new PssContextImpl(this)) .install(Ram.class, new RamContextImpl(this)) .install(Sm.class, new SmContextImpl(this, 1000, 300, 800)) .install(Traffic.class, new TrafficContextImpl()) .install(Crash.class, new CrashFileProvider(this)) .install(ThreadDump.class, new ThreadContextImpl()) .install(DeadLock.class, new DeadLockContextImpl(GodEye.instance().getModule(ThreadDump.class).subject(), new DeadlockDefaultThreadFilter())) .install(Pageload.class, new PageloadContextImpl(this)) .install(LeakDetector.class, new LeakContextImpl2(this, new PermissionRequest() { @Override public Observable dispatchRequest(Activity activity, String... permissions) { return new RxPermissions(activity).request(permissions); } }));

    opened by testerclub 5
  • Dashboard not loading

    Dashboard not loading

    Hi Kyson,

    First of all, thanks for the great tool you have build.

    I integrated AndroidGodEye into my application by following all steps as mentioned in https://github.com/Kyson/AndroidGodEye/wiki/0x00-QuickStart_en Installed the AndroidGodEye plugin in Android studio and provided the port number as default one 5390, but on starting the AndroidGodEye dashboard from plugin, it shows unable to connect error always.

    Any help on how to resolve this issue? Note: Notifications are coming in the phone when running the app for bitmap warnings, overdraw, etc. But dashboard not loading in the browser.

    Below is the logcat logs:

    2020-08-04 23:03:20.533 D/AndroidGodEye: GodEye init, cost 1ms.
    2020-08-04 23:03:20.633 D/AndroidGodEye: GodEye modules installed, cost 91 ms, config: GodEyeConfig{mCpuConfig=CpuConfig{intervalMillis=2000}, mBatteryConfig=BatteryConfig{}, mFpsConfig=FpsConfig{intervalMillis=2000}, mLeakConfig=LeakConfig{}, mHeapConfig=HeapConfig{intervalMillis=2000}, mPssConfig=PssConfig{intervalMillis=2000}, mRamConfig=RamConfig{intervalMillis=2000}, mNetworkConfig=NetworkConfig{}, mSmConfig=SmConfig{debugNotification=true, longBlockThresholdMillis=500, shortBlockThresholdMillis=500, dumpIntervalMillis=1000}, mStartupConfig=StartupConfig{}, mTrafficConfig=TrafficConfig{intervalMillis=2000, sampleMillis=1000}, mCrashConfig=CrashConfig{immediate=false}, mThreadConfig=ThreadConfig{intervalMillis=3000, threadFilter='cn.hikyson.godeye.core.internal.modules.thread.ExcludeSystemThreadFilter', threadTagger='cn.hikyson.godeye.core.internal.modules.thread.DefaultThreadTagger'}, mPageloadConfig=PageloadConfig{pageInfoProvider=cn.hikyson.godeye.core.internal.modules.pageload.DefaultPageInfoProvider}, mMethodCanaryConfig=MethodCanaryConfig{maxMethodCountSingleThreadByCost=300, lowCostMethodThresholdMillis=10}, mAppSizeConfig=AppSizeConfig{delayMillis=0}, mViewCanaryConfig=ViewCanaryConfig{maxDepth=10}, mImageCanaryConfig=ImageCanaryConfig{imageCanaryConfigProvider='cn.hikyson.godeye.core.internal.modules.imagecanary.DefaultImageCanaryConfigProvider'}}
    2020-08-04 23:03:20.634 W/AndroidGodEye: You should add dependency 'implementation project(':android-godeye-monitor')' if you want to start GodEyeMonitor.
    2020-08-04 23:03:20.634 D/AndroidGodEye: GodEye start monitor cost 1ms.
    
    opened by alokvnair 4
  • C/S 之间通讯最好使用 WebSocket 协议

    C/S 之间通讯最好使用 WebSocket 协议

    目前因为 Client 端使用 Http 轮询的方式,导致 Server 端被设计为所谓的「生产者 / 消费者」模式,这其实是一个设计错误,会导致很多问题:

    • 无法主动 Push 数据给 Client,导致只能在 Server 用 Stack 来存数据,Client 主动 Pull
    • 无状态。没有对不同的 Client 做区分,导致有多个 Client 的情况下会竞争数据

    建议可以改为使用 WebSocket 协议通讯。WebSocket Server 端可以用 Stetho 的实现,具体可以参考: https://github.com/nekocode/websocket-adb-forward

    opened by nekocode 4
  • io.reactivex.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'java.lang.String java.lang.ThreadGroup.getName()' on a null object reference

    io.reactivex.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'java.lang.String java.lang.ThreadGroup.getName()' on a null object reference

    io.reactivex.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'java.lang.String java.lang.ThreadGroup.getName()' on a null object reference at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74) at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onError(ObservableSubscribeOn.java:63) at io.reactivex.internal.observers.BasicFuseableObserver.onError(BasicFuseableObserver.java:100) at io.reactivex.internal.observers.BasicFuseableObserver.fail(BasicFuseableObserver.java:110) at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:61) at io.reactivex.observers.SerializedObserver.onNext(SerializedObserver.java:113) at io.reactivex.internal.operators.observable.ObservableSampleTimed$SampleTimedObserver.emit(ObservableSampleTimed.java:116) at io.reactivex.internal.operators.observable.ObservableSampleTimed$SampleTimedNoLast.run(ObservableSampleTimed.java:138) at io.reactivex.internal.schedulers.ScheduledDirectPeriodicTask.run(ScheduledDirectPeriodicTask.java:39) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:278) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:270) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.ThreadGroup.getName()' on a null object reference at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadlockDefaultThreadFilter.filter(DeadlockDefaultThreadFilter.java:11) at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadLock$2.apply(DeadLock.java:48) at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadLock$2.apply(DeadLock.java:43) at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59) ... 10 more java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.ThreadGroup.getName()' on a null object reference at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadlockDefaultThreadFilter.filter(DeadlockDefaultThreadFilter.java:11) at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadLock$2.apply(DeadLock.java:48) at cn.hikyson.godeye.core.internal.modules.thread.deadlock.DeadLock$2.apply(DeadLock.java:43) at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59) at io.reactivex.observers.SerializedObserver.onNext(SerializedObserver.java:113) at io.reactivex.internal.operators.observable.ObservableSampleTimed$SampleTimedObserver.emit(ObservableSampleTimed.java:116) at io.reactivex.internal.operators.observable.ObservableSampleTimed$SampleTimedNoLast.run(ObservableSampleTimed.java:138) at io.reactivex.internal.schedulers.ScheduledDirectPeriodicTask.run(ScheduledDirectPeriodicTask.java:39) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:278) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:270) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

    opened by xinglunyuan 4
  • 在我手机上崩溃,用readMe里提供的apk

    在我手机上崩溃,用readMe里提供的apk

    5.1的系统

     Process: cn.hikyson.godeyedemo, PID: 27087
        io.reactivex.exceptions.OnErrorNotImplementedException: totalTime must greater than 0
            at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
            at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
            at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74)
            at io.reactivex.observers.SerializedObserver.onError(SerializedObserver.java:155)
            at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver$InnerObserver.onError(ObservableConcatMap.java:254)
            at io.reactivex.internal.observers.BasicFuseableObserver.onError(BasicFuseableObserver.java:100)
            at io.reactivex.internal.observers.BasicFuseableObserver.fail(BasicFuseableObserver.java:110)
            at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:61)
            at io.reactivex.internal.operators.observable.ObservableTimer$TimerObserver.run(ObservableTimer.java:67)
            at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
            at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
         Caused by: cn.hikyson.godeye.core.internal.exception.GodEyeInvalidDataException: totalTime must greater than 0
            at cn.hikyson.godeye.core.internal.modules.cpu.CpuEngine$3.apply(CpuEngine.java:61)
            at cn.hikyson.godeye.core.internal.modules.cpu.CpuEngine$3.apply(CpuEngine.java:55)
            at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:59)
            at io.reactivex.internal.operators.observable.ObservableTimer$TimerObserver.run(ObservableTimer.java:67) 
            at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38) 
            at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26) 
            at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
            at java.lang.Thread.run(Thread.java:818) 
    
    opened by Reginer 4
  • English Translation

    English Translation

    Hai.. thanks for who make this an awesome tools to monitor resource usage in Android, but i wonder how to see an English translation in this monitoring tools, thanks in advance.

    opened by febiAlfarabi 4
  • Bump json5 and react-scripts in /android-godeye-monitor-dashboard

    Bump json5 and react-scripts in /android-godeye-monitor-dashboard

    Bumps json5 to 2.2.3 and updates ancestor dependency react-scripts. These dependencies need to be updated together.

    Updates json5 from 0.5.1 to 2.2.3

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1

    • New: package.json and package.json5 include a module property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)
    • Fix: stringify outputs \0 as \\x00 when followed by a digit. (#210)
    • Fix: Spelling mistakes have been fixed. (#196)

    v2.1.0

    • New: The index.mjs and index.min.mjs browser builds in the dist directory support ES6 modules. (#187)

    v2.0.1

    • Fix: The browser builds in the dist directory support ES5. (#182)

    v2.0.0

    • Major: JSON5 officially supports Node.js v6 and later. Support for Node.js v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been rewritten in native ES5, and the dependence on Babel has been eliminated.

    • New: Support for Unicode 10 has been added.

    • New: The test framework has been migrated from Mocha to Tap.

    • New: The browser build at dist/index.js is no longer minified by default. A minified version is available at dist/index.min.js. (#181)

    • Fix: The warning has been made clearer when line and paragraph separators are

    ... (truncated)

    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1 [code, [diff][d2.1.1]]

    ... (truncated)

    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Updates react-scripts from 1.1.4 to 5.0.1

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs and express in /android-godeye-monitor-dashboard

    Bump qs and express in /android-godeye-monitor-dashboard

    Bumps qs, qs and express. These dependencies needed to be updated together. Updates qs from 6.5.1 to 6.5.3

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main

    6.5.2

    • [Fix] use safer-buffer instead of Buffer constructor
    • [Refactor] utils: module.exports one thing, instead of mutating exports (#230)
    • [Dev Deps] update browserify, eslint, iconv-lite, safer-buffer, tape, browserify
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Updates qs from 6.5.2 to 6.5.3

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main

    6.5.2

    • [Fix] use safer-buffer instead of Buffer constructor
    • [Refactor] utils: module.exports one thing, instead of mutating exports (#230)
    • [Dev Deps] update browserify, eslint, iconv-lite, safer-buffer, tape, browserify
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Updates express from 4.16.3 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump express from 4.16.3 to 4.18.2 in /android-godeye-monitor-dashboard

    Bump express from 4.16.3 to 4.18.2 in /android-godeye-monitor-dashboard

    Bumps express from 4.16.3 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /android-godeye-monitor-dashboard

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /android-godeye-monitor-dashboard

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Installation

    Installation

    Thanks for the amazing product. I have few queries:

    How to make it analysis for every app , itseems to be profiling only for the AndroidGodEye App. Also how to install in windows , i tried following the instructions but no help.

    opened by Mahendra-ajnlens 1
  • Bump loader-utils and react-scripts in /android-godeye-monitor-dashboard

    Bump loader-utils and react-scripts in /android-godeye-monitor-dashboard

    Bumps loader-utils to 2.0.4 and updates ancestor dependency react-scripts. These dependencies need to be updated together.

    Updates loader-utils from 0.2.17 to 2.0.4

    Release notes

    Sourced from loader-utils's releases.

    v2.0.4

    2.0.4 (2022-11-11)

    Bug Fixes

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    v2.0.2

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    v2.0.1

    2.0.1 (2021-10-29)

    Bug Fixes

    v2.0.0

    2.0.0 (2020-03-17)

    ⚠ BREAKING CHANGES

    • minimum required Node.js version is 8.9.0 (#166) (c937e8c)
    • the getOptions method returns empty object on empty query (#167) (b595cfb)
    • Use md4 by default

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    ... (truncated)

    Changelog

    Sourced from loader-utils's changelog.

    2.0.4 (2022-11-11)

    Bug Fixes

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    2.0.1 (2021-10-29)

    Bug Fixes

    2.0.0 (2020-03-17)

    ⚠ BREAKING CHANGES

    • minimum required Node.js version is 8.9.0 (#166) (c937e8c)
    • the getOptions method returns empty object on empty query (#167) (b595cfb)
    • Use md4 by default

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by evilebottnawi, a new releaser for loader-utils since your current version.


    Updates react-scripts from 1.1.4 to 5.0.1

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
AndroidKy
Android,Python,JavaScript...
AndroidKy
🌼APM, (Application Performance Management) tool for kotlin/java application.

??APM, (Application Performance Management) tool for kotlin/java application.

Espresso 4 Mar 8, 2022
A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation codes like Share, Contacts, Email and etc, which you can easily use.

Android-Intent-Library A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation code

Next 67 Aug 24, 2022
A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates

WhatTodo Life can feel overwhelming. But it doesn’t have to. A Simple To-do app design in flutter to keep track of your task on daily basis. You can a

Burhanuddin Rashid 1k Jan 1, 2023
An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!

SlidingMenu (Play Store Demo) SlidingMenu is an Open Source Android library that allows developers to easily create applications with sliding menus li

Jeremy Feinstein 11.1k Dec 27, 2022
An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!

SlidingMenu (Play Store Demo) SlidingMenu is an Open Source Android library that allows developers to easily create applications with sliding menus li

Jeremy Feinstein 11.1k Dec 21, 2022
AnimApp is an app that recommends you random anime and you can add it to your favourite if you like it.

papb-team6 AnimApp is an app that recommends you animes and you can add it to your favourite if you like it. Team members: Firdaus Bisma Suryakusuma (

Gilang Adhitama Putra 1 Mar 9, 2022
A performance monitor SDK for Android application

OMagnifier OMagnifier is an Android APM SDK that can be used to monitor the app performance. Features Support Frame rate monitor: floating window for

Microsoft 70 Dec 12, 2022
Make Android DrawerLayout can be dragged out in real-time within the range of fullscreen

FullDraggableDrawer Make the DrawerLayout can be dragged/pulled out in real-time within the range of fullscreen, like Pure Writer: * Full demo video:

Pure Writer 264 Nov 29, 2022
Proof of concept of custom widgets and apps running on the Z Flip3 cover screen. Adds a widget to Z Flip3 cover screen that lets you launch a web browser-like app on the cover.

SubUI-browser Proof of concept of custom widgets and apps running on the Z Flip3 cover screen. Adds a widget to Z Flip3 cover screen that lets you lau

null 35 Dec 24, 2022
sample project that shows you how you can use Ktor to creat a server for real Project.

Ktor-Sample This is a sample project that shows you how you can use Ktor to creat a server for real Project. What is done Save data to database (Get a

Mohamed Emad 4 Dec 23, 2022
You can easily access the top of the screen in Android. Like a iPhone 6 & 6 Plus.

Reachability on Android Easy access on top. Like a iPhone 6 & 6 Plus. demo apk Usage Add dependencies compile 'com.github.sakebook:Reachability:0.2.0@

sakebook 258 Nov 12, 2022
An application for runners and cyclists. Allows you to monitor your physical activity, weight and receive reminders about workouts.

An application for runners and cyclists. Allows you to monitor your physical activity, weight and receive reminders about workouts.

Just_Amalll 3 Feb 7, 2022
Android NTP time library. Get the true current time impervious to device clock time changes

TrueTime for Android Make sure to check out our counterpart too: TrueTime, an NTP library for Swift. NTP client for Android. Calculate the date and ti

Instacart 1.3k Jan 4, 2023
ComposeImageBlurhash is a Jetpack Compose component with the necessary implementation to display a blurred image while the real image is loaded from the internet. Use blurhash and coil to ensure good performance.

compose-image-blurhash ComposeImageBlurhash is a Jetpack Compose component with the necessary implementation to display a blurred image while the real

Orlando Novas Rodriguez 24 Nov 18, 2022
Sunlight Apk - Sunlight App where You can decide Your Mood and Relative suggestions of what you can do will be displayed

Sunlight_Apk This Is a App where You can decide Your Mood and Relative suggestio

Jadu 1 Feb 5, 2022
Android has a built in microphone through which you can capture audio and store it , or play it in your phone. There are many ways to do that but with this dialog you can do all thats with only one dialog.

# Media Recorder Dialog ![](https://img.shields.io/badge/Platform-Android-brightgreen.svg) ![](https://img.shields.io/badge/Android-CustomView-blue.sv

Abdullah Alhazmy 73 Nov 29, 2022
Android has a built in microphone through which you can capture audio and store it , or play it in your phone. There are many ways to do that but with this dialog you can do all thats with only one dialog.

# Media Recorder Dialog ![](https://img.shields.io/badge/Platform-Android-brightgreen.svg) ![](https://img.shields.io/badge/Android-CustomView-blue.sv

Abdullah Alhazmy 73 Nov 29, 2022