Git Product home page Git Product logo

phimpme-android's Introduction

Phimp.me Android

Phimp.me is an Android image editor app that aims to replace proprietary photographing and image apps on smart phones. It offers features such as taking photos, adding filters, editing images and uploading them to social networks. Phimp.me stands for Photos - Images - Pictures. It is developed at FOSSASIA together with a global community.

Master Development Codecov Code Quality Chat Twitter
Build Status Build Status codecov Codacy Badge Gitter Room Twitter Follow

Download from Play Store

Screenshots

Do you have many different apps on your Android Phone for the purpose of clicking, editing and sharing images? Hey, guess what, now you don't need all of those because Phimp.me is here, with all the features packaged into one. So go and clean your phone memory to save your space for other useful purposes.

Features

  • Click beautiful images using the Phimp.me app. Use various advanced scene modes and variety of balance modes.

  • You can use your voice actions to invoke Camera, Just say "Ok Google click a picture". You can also select front and rear camera based on voice.

  • Browse the local gallery inside the app with folder and all photos mode. Copy, move and add a description to the images.

  • Edit images with various cool filters with optimized performance, built using OpenCV library.

  • Enhance contrast, hue, Satur, temp, tint, and sharpness of the image.

  • Use 'Crop and rotate' features from Transform section to get your perfect image.

  • Apply different stickers - facial, express, objects, comments, wishes, emojis, hashtag

  • Write anything on the images in your handwriting!

  • Don't be afraid to experiment as you can easily go back and forth with 'redo' and 'undo'.

  • Finally, after all this editing you can easily share the image to your favourite social media sites with our easy-to-use sharing feature.

  • Facebook, Messenger, Twitter, NextCloud, OwnCloud, Imgur, Dropbox, Box, Flickr, Pinterest, Instagram, Whatsapp, and Tumblr - You name it and we have it covered.

How to Contribute

This is an Open Source project and we would be happy to see contributors who report bugs and file feature requests by submitting pull requests as well.This project adheres to the Contributor Covenant. By participating, you are expected to uphold this code style. Please report issues here https://github.com/fossasia/phimpme-android/issues

Branch Policy

We have the following branches

  • development All development goes on in this branch. If you're making a contribution, you are supposed to make a pull request to development. Make sure it passes a build check on Travis

    It is advisable to clone only the development branch using the following command:

    git clone -b <branch> <remote_repo>

    Example:

    git clone -b my-branch [email protected]:user/myproject.git

    Alternative (no public key setup needed):

    git clone -b my-branch https://[email protected]/username/myproject.git

    With Git 1.7.10 and later, add --single-branch to prevent fetching of all branches. Example, with development branch:

    git clone -b development --single-branch https://github.com/username/phimpme-android.git

  • master This contains the stable code. After significant features/bugfixes are accumulated on development, we move it to master.

  • apk This branch contains automatically generated apk file for testing.

  • gh-pages For reference gh-pages branch is hosting the Gihub-Pages link for this Repo at https://fossasia.github.io/phimpme-android/

Development Setup

Before you begin, you should have already downloaded the Android Studio SDK and set it up correctly. You can find a guide on how to do this here: Setting up Android Studio

Setting up the Android Project

  1. Download the phimpme-android project source. You can do this either by forking and cloning the repository (recommended if you plan on pushing changes) or by downloading it as a ZIP file and extracting it.

  2. Install the NDK in Android Studio.

  3. Open Android Studio, you will see a Welcome to Android window. Under Quick Start, select Import Project (Eclipse ADT, Gradle, etc.)

  4. Navigate to the directory where you saved the phimpme-android project, select the root folder of the project (the folder named "phimpme-android"), and hit OK. Android Studio should now begin building the project with Gradle.

  5. Once this process is complete and Android Studio opens, check the Console for any build errors.

    • Note: If you receive a Gradle sync error titled, "failed to find ...", you should click on the link below the error message (if available) that says Install missing platform(s) and sync project and allow Android studio to fetch you what is missing.
  6. Download this OpenCV-android-sdk zip file and extract it.

    • Copy all the files from "OpenCV-android-sdk/sdk/native/3rdparty" to "phimpme-android/app/src/main/3rdparty" (create directory if it doesn't exist)

    • Copy all the files from "OpenCV-android-sdk/sdk/native/libs" to "phimpme-android/app/src/main/jniLibs" (create directory if it doesn't exist)

    • Copy all the files from "OpenCV-android-sdk/sdk/native/jni/include" to "phimpme-android/app/src/main/jni/include" (create directory if it doesn't exist)

    • Copy all the files from "OpenCV-android-sdk/sdk/native/staticlibs" to "phimpme-android/app/src/main/staticlibs" (create directory if it doesn't exist)

    • Now build your project. If your build fails then try deleting these build directories "phimpme-android/app/.externalNativeBuild" and "phimpme-android/app/build", if they exist and run the build again.

    • Note: If you receive a Gradle sync error titled, "executing external native build for ndkBuild ...User\Project\phimpme-android\app\src\main\jni\Android.mk",Then you go to the file "app/build.gradle" and make those lines "externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' }" comment.

  7. If build error still persist, try replacing ndk with ndk version 18b from ndk-archives . Once all build errors have been resolved, you should be all set to build the app and test it.

  8. To Build the app, go to Build > Make Project (or alternatively press the Make Project icon in the toolbar).

  9. If the app was built successfully, you can test it by running it on either a real device or an emulated one by going to Run > Run 'app' or pressing the Run icon in the toolbar.

  10. To enable the sharing features to a different account, add API_KEY/ APP_ID associated with accounts. Add the Keys in constant.java and strings.xml. Following are the links to developer pages of account. Go there to create apps and get keys.

License

This project is currently licensed under the GNU General Public License v3. A copy of LICENSE is to be present along with the source code. To obtain the software under a different license, please contact FOSSASIA.

phimpme-android's People

Contributors

97k avatar abishekvashok avatar amitiwary999 avatar anantprsd5 avatar batbrain7 avatar cloudypadmal avatar codedsun avatar codepoet2017390 avatar dependabot-preview[bot] avatar dependabot[bot] avatar dynamitechetan avatar harshithdwivedi avatar iamareebjamal avatar kk63852 avatar madhavrathi avatar mariobehling avatar mayank8318 avatar mohitmanuja avatar nikit19 avatar pa1pal avatar raj10071997 avatar rohanagarwal94 avatar sauravvishal8797 avatar scandindian avatar sparrow007 avatar sridharjajoo avatar subhankar29 avatar vanhonit avatar vinaysajjanapu avatar yashk2000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

phimpme-android's Issues

Issue with phimp.me redirect

phimp.me currently redirects to

https://github.com/fossasia?utf8=✓&query=phimpme

It doesn't work and should be changed to

https://github.com/fossasia?utf8=✓&q=phimpme

Travis Build Failing

Error as below:

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring project ':app'.

    failed to find target with hash string 'Google Inc.:Google APIs:23' in: /usr/local/android-sdk

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    BUILD FAILED

Codecov failed

Add the jacoco plugin and required scripts to integrate with travis.

Error in inflating layout due to adview in main.layout

The app is crashing in tablet due to incorrect xmls:ads in main.xml(layout)

Expected Behaviour
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
should be replaced with
xmlns:app="http://schemas.android.com/apk/res-auto".
or
Comment adviews in main layout (large,small,x-large).

Steps to reproduce it

Try to run this app in the tablet (large- screen devices). Open mail.xm(layout-large,small,land,x-large).

LogCat for the issue

java.lang.RuntimeException: Unable to start activity ComponentInfo{vn.mbm.phimp.me/vn.mbm.phimp.me.PhimpMe}: android.view.InflateException: Binary XML file line #47: Error inflating class com.google.ads.AdView
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2260)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.access$800(ActivityThread.java:145)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1216)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5266)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:826)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:642)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #47: Error inflating class com.google.ads.AdView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:711)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
at android.view.LayoutInflater.inflate(LayoutInflater.java:496)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
at vn.mbm.phimp.me.PhimpMe.onCreate(PhimpMe.java:216)
at android.app.Activity.performCreate(Activity.java:5277)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.access$800(ActivityThread.java:145)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1216)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5266)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:826)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:642)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.ads.AdView" on path: DexPathList[[zip file "/data/app/vn.mbm.phimp.me-2.apk", zip file "/system/priv-app/AmazonPlatform-release.apk", zip file "/system/priv-app/DeviceClientPlatformContractsFramework.apk", zip file "/system/priv-app/DeviceSoftwareOTAContracts.apk", zip file "/system/priv-app/MetricsApi-2066310.apk", zip file "/system/priv-app/RemoteSettingsInternalSDK.apk", zip file "/system/priv-app/amazon.jackson-19.apk", zip file "/system/priv-app/com.amazon.communication.apk", zip file "/system/priv-app/com.amazon.dp.logger.apk"],nativeLibraryDirectories=[/data/app-lib/vn.mbm.phimp.me-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.view.LayoutInflater.createView(LayoutInflater.java:563)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:700)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
at android.view.LayoutInflater.inflate(LayoutInflater.java:496)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
at vn.mbm.phimp.me.PhimpMe.onCreate(PhimpMe.java:216)
at android.app.Activity.performCreate(Activity.java:5277)

Would you like to work on the issue?

Yes.

Geolocation Button does not do anything

Actual Behaviour

After selecting a photo from the gallery or taking a photo from the phone camera, the geolocation button does not do anything. The values of the latitude and longitude are -1. It does not change after clicking the button

Expected Behaviour

The values of latitude and longitude should change according to the user location.

Steps to reproduce it

  1. Take user current location using locationListener.
  2. Get the values of latitude and longitude.
  3. Set the values of latitude and longitude.

Would you like to work on the issue?

Yes, I would love to do it. Can I proceed with it?

Enhance the home screen

As stated in the features the home screen features would need enhancement:

  • Show local captured images
  • Grid view of images

App crashed while mounting images from different accounts

There is security exception as per the crash report.

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=8193, uid=10325
                                                                   at android.os.Parcel.readException(Parcel.java:1620)
                                                                   at android.os.Parcel.readException(Parcel.java:1573)
                                                                   at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3074)
                                                                   at android.app.ContextImpl.sendBroadcast(ContextImpl.java:777)
                                                                   at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:402)
                                                                   at vn.mbm.phimp.me.newGallery$DownloadImageAsyncTask.onPostExecute(newGallery.java:6951)
                                                                   at vn.mbm.phimp.me.newGallery$DownloadImageAsyncTask.onPostExecute(newGallery.java:6704)
                                                                   at android.os.AsyncTask.finish(AsyncTask.java:651)
                                                                   at android.os.AsyncTask.-wrap1(AsyncTask.java)
                                                                   at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5461)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)

User Interaction Issues

Actual Behavior

If you press back button on settings, upload and camera it goes back to gallery and then close the app promptly and we have to select the options from navigation given below. There are some Spelling and Grammar error in dialog boxes.

Expected Behaviour

It should go back to home screen and shouldn't close app. It can be made swipe view that if screen is swiped left then it goes to camera option and if swiped again it goes to upload and so on

Steps to reproduce it

It might because of value which remain saved in key code it can be made right by making it to "0" after setting view to home screen.
Screen can be converted into swipe view by viewpager.

Would you like to work on the issue?

Yes I would like to work on these.

Camera View shows a disoriented 'Flash' icon when clicked on it

Actual Behaviour

The flash ⚡ icon oriented in a different direction when switching between;

  • Flash ON
  • Flash AUTO
  • Flash OFF

Expected Behaviour

The flash ⚡ icon has to be relative to the phone orientation!

Steps to reproduce it

  1. Open app and go to Camera view
  2. Keep the phone in a vertical position and try switching Flash icon

LogCat for the issue

Not available

Screenshots of the issue

device-2017-03-08-143251

Would you like to work on the issue?

Yes 👍

Opening another image after the previous image has been closed crashes the app

Actual Behaviour

Open the image, press back button and opening another image crashes the app

Expected Behaviour

The app shouldn't crash after opening another image

Steps to reproduce it
Open the image, press back button and open another image (Repeat it as the behavior appears to be random, sometimes the crash happens while opening second image, sometimes third)

LogCat for the issue

03-05 00:13:23.059 9470-9470/vn.mbm.phimp.me E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: vn.mbm.phimp.me, PID: 9470
                                                               java.lang.RuntimeException: Unable to resume activity {vn.mbm.phimp.me/vn.mbm.phimp.me.PhimpMe}: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
                                                                   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3028)
                                                                   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3063)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1361)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                   at android.os.Looper.loop(Looper.java:135)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5343)
                                                                   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:905)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
                                                                Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
                                                                   at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:64)
                                                                   at android.database.BulkCursorToCursorAdaptor.requery(BulkCursorToCursorAdaptor.java:133)
                                                                   at android.database.CursorWrapper.requery(CursorWrapper.java:186)
                                                                   at android.app.Activity.performRestart(Activity.java:6062)
                                                                   at android.app.Activity.performResume(Activity.java:6088)
                                                                   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3011)
                                                                   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3063) 
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1361) 
                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                   at android.os.Looper.loop(Looper.java:135) 
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5343) 
                                                                   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:905) 
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

Would you like to work on the issue?

Yes

Automatically build an apk file in the apk branch

The goal of this issue is to get an apk on each merged pull request build in the apk branch.

Use travis to build apks automatically. You can check other FOSSASIA projects e.g. Open Event Android and Susi Android how it is done there.

Discard button - image still gets saved

Actual Behavior
When we press the discard button after taking a picture, the image still gets saved and shows up in gallery

Expected Behavior
Discard button should delete the saved copy

Steps to reproduce it

  1. Take a picture.
  2. discard it.
  3. go to gallery tab, the image is still saved.

Would you like to work on the issue?

Yes, I would like to work on it.

Maps not visible

Need to upgrade the maps library to v2 from current v1.
v2 will not use MapActivity so need to refactor the code.

gradle build error

on importing the project to android studio, project build fails with the following error message "Gradle sync failed: Failed to find target with hash string 'Google Inc.:Google APIs:23' in: C:\Users\user\AppData\Local\Android\Sdk".

changing the compileSdkVersion to 24 in build.gradle file in app folder does the work.

I can pr fr this ?

Add contributors.md

Adding instructions for contributors is a good way IMO. We can add things like guidelines for new contributors, tutorials on squashing, branching policy, commit message guidelines etc. What do you all say guys?

Implement danger with android app previews

Travis doesnot check for runtime errors of the app currently, we could implement such a system with danger or maybe a bot account to post the previews of the app by taking screenshots or maybe a simple giff which shows the transition of screens and demonstrates button and function clicks as a comment to a PR via Travis or other CI, this could improve the testing, would result in an increase in overall app quality and there would be new contributors for sure. But it's a bit difficult.

This is how I suggest a method (I couldn't give a flowchart so I am expressing it as steps):

  1. User makes a PR (Already there)
  2. Github calls Travis via git hook (Already being done)
  3. Travis generates app (Already being done)
  4. Travis runs espresso tests (Not being done)
  5. After each espresso test we call in a function from a class which would be put into the tests folder, generating screenshots and saving them. (Not being done)
  6. Another script would make a comment with this image or we could pass them to danger and danger makes a comment with them on the PR.

What are your opinions?

Problems while uploading images to upload list

Actual Behaviour

1- If you upload any image from upload activity it only add one picture and doesn't add more than one pictures to list view.
2- If you add pictures from floating upload button it corrupts first entry in list view of your uploaded list.
3- If you add pictures from floating upload button from gallery it doesn't prompt you on entering same picture again and again.

Expected Behaviour
1- It should add selected image into an list instead of only single image.
2- It should add image to uploaded list continuing from the last image in the list.
3- I should ask user if user wants to enter same picture again as it is already in upload list.

Steps to reproduce it

It can be done by checking errors in making list of images and showing them in list view.

Would you like to work on the issue?

Yes I would Like to work on these.

Unfortunately app has been stopped

App has been stopped

When i select an image from gallery fragment ....
if image scale size is too large it has been crashed when image scale size is small it has no problem

we need to remove this issue. User can also upload large scale images and edit it and copped.

screenshot_2017-03-03-16-40-39

Images taken from Camera shown twice in Gallery

In Phimp, taking pictures from the camera results in duplicating the image. As I have observed, the image is saved in two different folders with two different names!

  1. take_photo
  2. PhimpMe_Photo_Effect

Hence when the images from the external storage is fetched, it will show the same image twice.

Steps to re-produce

  • Open App and go to Camera
  • Click on Camera icon and take a picture
  • Click Save

Now go to Upload and click on the + icon to load the image gallery and you will see duplicates

Also note that if I don't click Save and click Discard, the camera will be open again. And if we go back, then only one image will appear in the gallery.

  • Duplicates shown in new Gallery GridView
    duplicates

  • Duplicates shown in Upload
    duplicates2

  • Duplicates don't occur if we discard and click back from the Camera view
    single

Rewrite maps related code using v2 api

Although the project is using libraries of earlier versions, the compile SDK version and the versions of the appcompat and design libraries used should be updated to make it compatible with Nougat Devices.

Due to deprecation of few things in the code base it has become tedious to work on it (majorly map related v1 is depreciated).

Even if I try to make changes there will be possibilities that they will cause conflicts. It would be great if we could come up with a solution so it becomes easier for people to set up the project in the Android Studio environment and test.

The possible solution to change the map related code is to remove them to make the other code testable and write them again in v2.

Cache Gradle Dependencies while building in Travis

Actual Behaviour

Dependencies are not being cached and are downloaded again and again, Travis doesnot have that much internet speed!

Expected Behaviour

Gradle dependencies should be cached.

Steps to reproduce it

See the Travis CI log

Would you like to work on the issue?

No. Someone else could try.

Improving the UI

Improving the overall UI of the app. Adding style file to incorporate material design and update the aesthetic.

screenshot_2017-03-04-19-08-03

Add PR and Issue templates

Adding PRs and issue templates would make the project more better, we could make use of the default .github folder to do so. Can we have it?

Write tests

We don't have tests currently. Checking that each function works correctly is an integral part in an app development and tests should be used. Currently the project doesnot have any tests and as indicated by codecov the code coverage is currently 0%.While we build the app on Travis and test the changes, it won't be enough, we need to start writing tests.

As a starting point, write junit tests for:

  • ACRAReport.java
  • AddAccountDialogFragment.java
  • BluetoothShareMultipleFile.java
  • CacheStore.java
  • CollectUserData.java

This should be done after all features start working as they have more priority than this

Implement UI tests with Espresso

Actual Behaviour

No tests are defined for testing the UI of the application

Expected Behaviour

Espresso Testing should be implemented to check for the UI elements.

Would you like to work on the issue?

Yes

Local Photos Not Reponding

#60 after this merge the app is trying to load all the photos in my phone and its tuck after the splash screen. I have over 5000 images in my phone.
The log is
I/CACHE: Saved file /storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20160918-WA0012.jpeg (which is now /storage/emulated/0/.PhimpMeCache/040317015410104.png) correctly for each photo.
I think the previous method was good to show only 6 images at once and then load more on button click.
@pa1pal please check.

Allowing share via multiple platforms

Actual Behavior
Currently, the app allows photos to be shared explicitly via Bluetooth.

Expected Behavior
We can extend it to a 1 click share button that allows sharing via any app that allows Image content.

Would you like to work on the issue?

Yes, I would like to work on it.

Add choose folder functionality

Actual Behaviour

Currently the user has to scroll all the way down to the particular pictures and it becomes tough to find the picture he/she wishes to upload from a sea of pictures.

Expected Behaviour
A choose folder functionality will allow the user to choose from different folders on his/her device making the task much easier.

Would you like to work on the issue?

Yes,i would definitely like to work on the issue.

App crashes while trying to switch camera

Actual Behaviour

Currently when the user tries to switch the camera, there is always an app crash as Camera API is depreciated

Expected Behaviour

There should be no such crashes and depreciated code should be changed with new cameraV2 api.

Steps to reproduce it

Open app , go to camera , press the camera switch button.

Would you like to work on the issue?

Yes.

Travis tried to deploy the app to apk on pull requests

Travis credentials for the repo is needed to push the generated apk to the apk branch, since they are not available to pull requests, we could run these scripts on direct commits, since github addresses PR merge commits like direct commit, we can safely have the apk generated for PR merges.

This issue is very easy and can be solved by a one line solution with the help of a Travis variable.

This would improve the build time for PR, as Travis currently tries to push after cloning the repo and it can't push and there is no need to do so!

Runtime permission error in API 23+

App crashes while opening in Marshmallow above devices. Needs to get Runtime permission for READ_EXTERNAL_STORAGE.

java.lang.RuntimeException: Unable to resume activity {vn.mbm.phimp.me/vn.mbm.phimp.me.PhimpMe}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/thumbnails from pid=26836, uid=10126 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
                                                                     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3121)
                                                                     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3152)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
                                                                  Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/thumbnails from pid=26836, uid=10126 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
                                                                     at android.os.Parcel.readException(Parcel.java:1620)
                                                                     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
                                                                     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
                                                                     at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
                                                                     at android.content.ContentResolver.query(ContentResolver.java:491)
                                                                     at android.content.ContentResolver.query(ContentResolver.java:434)
                                                                     at vn.mbm.phimp.me.newGallery.resumeLocalPhoto(newGallery.java:3407)
                                                                     at vn.mbm.phimp.me.newGallery.onResume(newGallery.java:3242)

Replace icons and improve overall design

The idea is to replace the icons by following the Material Design guidelines, especially the ones in the take picture activity and the editing activity, plus to fix some bugs related to them.

Disable pushes to slack for forks

Actual Behaviour

When a commit is made on a fork, slack gets notification.

Expected Behaviour

Notification should not be made.

Would you like to work on the issue?

Yes.

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.