Code Monkey home page Code Monkey logo

nitishgadangi / privacy-indicator-app Goto Github PK

View Code? Open in Web Editor NEW
300.0 8.0 31.0 7.49 MB

🔔 Get the famous "Recording Indicators" feature of iOS14 to android. Get notified every time a third-party app or a service uses camera or microphone.

Home Page: https://play.google.com/store/apps/details?id=com.nitish.privacyindicator

License: MIT License

Java 14.27% Kotlin 85.73%
ios14 recording-indicators android privacy-indicator camera microphone foss-hacks

privacy-indicator-app's Introduction

Logo

Privacy Indicators for Android

Get notified every time a third-party app or a service uses camera or microphone. Inspired from ios14 and Android 12 recording indicators.
Download . Report Bug . Request Feature . Contribute

Check out the Demo Video 📽 on Youtube

Made with ❤️ by Nitish Gadangi
Winner 🏆 FOSS HACKS 2020

Buy Me a Coffee



About Privacy Indicators app

Privacy Indicators will bring the above Recording Indicators feature of iOS 14 to Android (With more extra features and Customizations 🥳).

  • Get Notified every time any third-party app is accessing your Camera.
  • Get Notified every time any app is accessing your Microphone.
  • You can customize indicator color, size, opacity and its position
  • Option to enable Haptic feedback when indicators appear
  • You can turn off any individual features in required
  • View log of Indicators tiggered at one place.

So install the app and you will never have trust issues with the Camera and Mic usage 😉.

demo gif

Screenshots

Screenshot1 Screenshot2 Screenshot3
Screenshot4 Screenshot5 Screenshot6

This Service/App doesn't have any permission to use the internet or your device's camera, microphone, or any other Hardware. And will NOT gather any data whatsoever.

Download from here:

Download from Google Play Download from F-Droid

You can also access all the releases from Releases tab

How to Use

  1. This App will work only on devices with Android 7.0 (API level 24) and above, so make sure you having the compatible device.
  2. After installing the App, Enable the Service from the Accessibility Settings.
  3. You can Customise the Indicators color and position as per your choice from the Home.
  4. Also if required you can enable the Vibration Feedback option.
  5. Kudos 🤝, You are good to go.
  6. The Service keeps running in the background and automatically starts even you restart the mobile 😎.

Built With 🛠

Some of the popular libraries and MVVM clean architecture used with Room database as a source

  • Kotlin - First class and official programming language for Android development.

  • Coroutines - Threads on steroids for Kotlin

  • Android JetPack - Collection of libraries that help you design robust, testable, and maintainable apps.

    • Paging3 - Load and display small chunks of data at a time.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - A robust replacement for findViewById, kotlin sytnhetics and DataBinding
    • Navigation Components - Navigate fragments as never easier before
    • SavedStateHandle - A handle to saved state passed down to androidx.lifecycle.ViewModel.
    • Room - Persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

  • Dependency Injection -

    • Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
  • Architecture

    • Clean Architecture
    • MVVM
    • Offline with Room

Back Story

Recording Indicators in iOS14 : With iOS 14, Apple is introducing a camera and microphone recording indicator in the status bar. It will appear as an orange dot above the signal bar. The idea of a recording indicator is to alert users whenever the mic or camera are being used. The feature will give users more control over data and privacy. enter image description here

However Android lacks such kind of privacy feature. Apparently, any app can use your Camera and Mic without any special notification (once you have granted the permission). This might give a door for Malware to run a service in the background and Track everything you do Visually and Might be a threat to your privacy.

With the increase in usage of Online Platforms for Audio and Video Conferences, it's important to track which app is accessing your Camera or Microphone in the Realtime.

Like my work?

I am a student, tutor, engineer, and a maker to various projects. For 2+ years, I have been working on Open Source.

If you use any of my projects or like what I'm doing, please consider backing me with simple donations so that I can continue my open source work.

Buy me a coffee

Consider Giving a ⭐ here .

Credits

Thanks to Dhaval2404 for the amazing ColorPicker for Android

Special Credits to sanjaveljanoska for the awesome icon

Made with ❤️ by Nitish

privacy-indicator-app's People

Contributors

austinhuang0131 avatar izzysoft avatar nitishgadangi avatar subhrajyotisen avatar umashankar1411 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

privacy-indicator-app's Issues

The app crashes whenever I open gilder

Whenever I open glider (an open source client for hacker news), the privacy indicator app shows indicators for microphone and camera for a second and then I get a system prompt telling me that privacy indicators app has crashed. The app doesn't show the indicators for any app after this, until I restart my phone.

Location Indicator

The version I have installed has the location Indicator option greyed out. Is this the most up to date version?

Partial camera detection OnePlus Nord n10 5g

Hello I noticed that camera detection only happens for a couple of camera modes on my OnePlus Nord n10 5g. If I open my camera app and it is on the standard "photo" setting the app does not alert me that the camera is in use. If I change to recording or other special feature then it will alert me. Thanks, Brian.

Exceptions

Describe the feature you'd like :

I use projectm for the wallpaper. It uses the mic for all the time. Would be nice to declare an exception for the app.

Additional context :

Screenshots :

Would you like to work on the issue?

Version names

Nice idea for a privacy app! But currently, all APKs identify as version 1.0 (and versionCode 1), which makes it hard to know which one is installed on the device. Would you please consider

  • increasing versionCode with each release
  • adjust versionName, eg matching your tag name (or even better, use something like semantic versioning for tag name and versionName)

even though it's still in beta? Thanks a lot!

Camera detection not working when it is in portrait mode

Describe the bug :

Camera alert working when I opened camera, even for video it was showing the icon and vibration, but if it is in portrait mode, it was not working.

Steps to reproduce it :

Open camera app, set it to portrait mode.

LogCat for the issue :

Smartphone Info :

Device [Realme XT]
Android Version [Android 11 ]

Dark / Pure Black (OLED) theme

Describe the feature you'd like:
Implement Dark/Black (OLED) theme feature as shown in the screenshot.
Screenshot_2021-09-12-11-12-59
Though "Based On Time" is not that important for Privacy-Indicator-App...

Additional context:
screenshot source: MaterialFiles app

[Device Specific] [User Reported] Service not running once the app is cleared from Recents

Based on user reports,
It looks like the Service is not running once the App is cleared from the Memory.
But, this is not the expected behavior as Accessibility Services will remain running independently to App.

This list is based on reports from various users.

  • Redmi Note 8 Pro
  • Redmi Note 7 Pro
  • Few Vivo devices
  • Most of the Honor Devices

If you find the similar issues with your device, please drop a comment below so that it will add to the list

Unintuitive layout

Describe the feature you'd like:
Currently picking "Indicators Foreground\Background Colour" only works when clicking on the dotted square option (2). I think for users it's more intuitive to click on 1. So maybe add 1+2 section for Foreground & Background separately. (check screenshots)

Screenshots:
Screenshot from 2021-09-09 12-41-19

[Feature] show duration of access in logs

Describe the feature you'd like :

In log entries show not only the time when the app accessed the camera or microphone, but also how long did it keep using it.

Additional context :

Say I used Shazam several times a day so I think nothing of it when it comes up in logs. If I saw that one of the log entries said "1 hour of non-stop listening" that would raise my concern.

Pause Service on Screen Off

I think it not necessary to keep the service running even when the Screen is Off.

Notes
WakeLock can be used to implement this

Microphone indicator does not go away

First of all, I appreciate your effort in creating the app and would like to thank you for providing it to others for free and opening the source code. I have encountered a problem and would like to discuss it here:

I have granted Indicator access to accessibility, the camera indicator works absolutely fine. Nevertheless, the microphone indicator persist there no matter what. It disappears only after I disable and enable the service.
Here are the screenshot of apps behavior:

  1. Here is a screenshot taken from Signal.
    Screenshot_20201222-180045
  2. Here is the indicator appearing when recording a voice message
    Screenshot_20201222-180052
  3. This is how it is left there even after ending voice message recording.
    Screenshot_20201222-180056
  4. This is the same indicator without any apps using microphones on the background.
    Screenshot_20201222-180109

The problems appears no matter what app I use, be it an ordinary sound recorder or voice message recording in a certain app.
Any ideas on why it happens?

OS: Android 7.0
Manufacturer: Huawei
Model: Honor 6A

Location LED

Hey could you add the notification feature for the use of location too by any app.
Aryan
Thanks

F-droid version

Hi,
this is one of the most useful application in term of privacy, are you planning to add it to f-droid?
Thank you

Microphone Is "Used" When Playing Audio From Speaker

Describe the bug :

When I play audio from videos on YouTube and Floatplane on my phone's speaker, the microphone indicator appears and goes away over the duration of the video.

Expected Behaviour :

This should not show anything when a video is playing. I do not see the indicator when I have headphones plugged in.

Steps to reproduce it :

  1. Open up the youtube app.
  2. Pick a video that you wish to watch.
  3. Play the video.
  4. Use your phone's speaker as the audio output.
  5. The microphone indicator will appear and disappear while the video is playing.

LogCat for the issue :

I'm not sure where to get the logs or if they're relevant for this issue.

Screenshots of the issue :

Screenshot_20210210-084048

Screenshot_20210210-084444

Smartphone Info :

Google Pixel 5
Android 11

Would you like to work on the issue?

Unfortunately no I cannot work on this issue.

Function to control the axis of the dots

Hi! It would be great if you could implement a function to be able to control the positioning of the dots. Like on devices with notches or punch holes, to maybe be able to place the dots closer to the selfie camera, similar to how iOS implements it.

App crash

App kept crashing when I activate microphone or camera on my Samsung Galaxy Note20 Ultra. Please let me know what info I can give. Thanks

Project maintained?

is there any plan to update this app?
there are 2 big issues currently:

  • location indicator feature is missing
  • the app loses accessibility permission even if it is enabled (requires re enable)

Dot placement issue.

First great app.
Because my phones screen corners are rounded the dot is going under the rounded corner and isn't visible, i can see only edge of the dot. Can you add an option to place the dot on the top center. On the screen shot the problem isn't visible. I can get around this problem by making the dot bigger but i didn't like that way.
Thanks.

Crash: toString() on null

Basically one of the two objects has a null before toString():

val componentName = ComponentName(accessibilityEvent.packageName.toString(), accessibilityEvent.className.toString())

Yes, I'm on 2.1.

Describe the bug : Privacy Indicator crashes when I open certain apps.

Expected Behaviour : The app should not crash.

Steps to reproduce it : Enable Privacy Indicators then open com.perol.play.pixez. This bug does not seem to occur on other apps I have.

LogCat for the issue :

photo_2021-06-26_17-10-34

Screenshots of the issue : Crash.

Smartphone Info :

Device Sony H3123
Android Version 9

Would you like to work on the issue? Hint is provided.

Clipboard monitor

I don't know any opensource app that does something similar, so I think it would be a great upgrade for your app.
Currently I use App Ops to monitor clipboard access, unfortunately it's not opensource.

[Bug] Crashes when opening "Freezer".

Describe the bug :

Privacy Indicator consistently crashes after opening the Freezer app.

You just need to install the freezer app. And open it

LogCat for the issue :

This information is generated from the Crash Log View application. - https://play.google.com/store/apps/details?id=com.arumcomm.crashlogviewer

Process: com.nitish.privacyindicator
PID: 24659
Flags: 0x20c8be46
Package: com.nitish.privacyindicator v7 (2.1)
Foreground: No
Build: motorola/pokerp_64/pokerp:9/PTBS29.401-58-2/58-2:user/release-keys

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
	at com.nitish.privacyindicator.services.IndicatorService.onAccessibilityEvent(IndicatorService.kt:381)
	at android.accessibilityservice.AccessibilityService$2.onAccessibilityEvent(AccessibilityService.java:1538)
	at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:1724)
	at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:37)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:235)
	at android.app.ActivityThread.main(ActivityThread.java:6760)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

Smartphone Info :

Device Moto e6 plus
Android Version 9
"Freezer" version 0.6.13

Would you like to work on the issue?

No. I don't know much about android app development so I don't think I could help :p

Request to upload app on F- Droid

Firstly great work, thanks for bringing this feature to android and keeping it foss.

Having said that, i for one dont use google play. Could you kindly consider including a version of your app on fdroid. Would be great if you could do that.

Thanks

unable to click views under dots

views which are covered under the dots cant be clicked

Possible Fix:
Make the Dots (Views)

layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;

Make "Cancel" & "OK" option darker

Describe the bug:
Currently "Cancel" & "OK" option is not visible while choosing Indicator Background/Foreground Colour.

Screenshots of the issue:
Screenshot_2021-09-12-10-54-48

Critical security issue !

I installed the application and turned on the service that was requested, after a while i restarted the device and the system did not ask for my pin code.
I have android 10 (lineage os 17.1) on my device and ENCRYPTION is turned on, the decryption PIN code must be entered before starting the device. Ever since I installed the app and activated that service this step has been bypassed.
I uninstalled the application and the same thing happens, the only solution is to change the pin code after uninstallation, after which the encryption is active again.

What is the problem ?
I have a suspicion of service, but I am not an expert.

False Positives?

Describe the bug :

Camera Indicator triggered by app with no permissions for camera only files.

Expected Behaviour :

Only trigger when camera is accessed not when media files are. Altho it could perhaps be a feature.

Steps to reproduce it :

Privacy indicator app download from F-droid, AnySoftKeyboard from F-droid, Infinity (Alt Reddit Client) from F-droid. Also OneUI Home this could be non false positives due to it being proprietary.

Smartphone Info :
|Device || Samsung S22U Exynos
|Android Version| | Android 13

Would you like to work on the issue?

Yes, but I have no knowledge of programming.

Auto permission Revoker

Describe the feature you'd like :

Add Auto permission Revoker
 or 
One Time Permission feature.

This is a privacy feature.
Which can revoked permission after pressing home button or exit from the app or after few minutes (time) or a tile button.
Next time when you use the app it request permission again.

Additional context :

Today many app needs unwanted permissions. If you add this features then when you use the app then only give them (apps) permission access. Otherwise it can't access permissions in background.

Permanent app permission needed for some apps like
File manager, music player, video player, gallery app etc but other apps used for short time.

It is helpfull for this apps like
Pdf editor, File scanner, File sharing, Facebook etc.

Screenshots :

Would you like to work on the issue?

I don't know about coding.

I don't know. Probably if you want to add this privacy feature then, you can do this.

Request: Blacklist

The blacklist can be used to prevent indicators from showing up when certain apps use the microphone/camera. A good example would be when we are using a screen recorder when recording gameplay.

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.