Manage local photos on Android: gallery, geotag with photomap, privacy, tags, find, sort, view, copy, send, ... .

Overview

"A Photo Manager" with "A Photo Map", AndroFotoFinder

Enhanced, privacy aware Android Gallery App to manage local photos:

Highlights:

Privacy:

  • can hide photos from other gallery-apps/image-pickers.
  • Vault mode: If enabled unwanted photos cannot be seen.
  • photos are kept on local device. No upload to third party.
  • no adds, no usertracking, free open source, available on f-droid

Required Android Permissions:

  • INTERNET: to download map data from Open Streetmap Server
  • ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE: to find out if wifi/internet is online to start downloaded geodata
  • WRITE_EXTERNAL_STORAGE to cache downloaded map data in local file system and to do file operations with the photos
  • READ_LOGS to read and save potential crash-logs to a textfile.

---
available on upToDown store available on F-Droid app store
Downloads
DISCLAIMER Be cautious if you download "A Photo Manager" where the apk size is bigger than 1.5 Megabytes:
---

Features

... features more detailed

Help wanted for further Translations

Current Project Status

Table of Contents

Contributing and Bugreports

Feedback, translation and contributions are welcomed.


Donations:

If you like this app please consider to donating to https://wiki.openstreetmap.org/wiki/Donations .

Since android-developping is a hobby (and an education tool) i donot want any money for my apps so donation should go to projects i benefit from.

Comments
  • APhotoManager: photo not found when opened from file manager with app specific content uri-s

    APhotoManager: photo not found when opened from file manager with app specific content uri-s

    Expected behavior

    I expected I'll be able to view pictures from dir filr manager using Aphotomanager

    Actual behavior

    When I choose to view a picture from dir file manager with Aphotomanager it's say photo not found in media database and opens another photo

    How to reproduce

    • download Aphotomanager and Dir file manager both on Fdroid.
    • access a directory on dir filemanager with more than 10 pictures
    • select the option to open picture with A photoviewer
    • it says photo not found in media database.

    • Device: Infinix Note 4
    • Operating system: Android 8.0 *Software version: Aphoto manager 0.6.4.180314 Dir File manager 1.5.5

    Recording Of The Bug

    https://youtu.be/WAPylthmLbc



    Posted on Utopian.io - Rewarding Open Source Contributors


    [update k3b 2018-05-03]

    Reproducable: OI-Filemanger tries to open content://org.openintents.filemanager//storage/emulated/0/DCIM/..... which APhotoManager currently does not understand.

    bug 
    opened by kodeblacc 16
  • [FR] rotate 90° / orientation tag

    [FR] rotate 90° / orientation tag

    the app is editing EXIF but doesn't handle the most used tag: Orientation. Please implement lossless rotation 90°/180°/270° through EXIF. As an UI example see Shotwell application. Thanks

    bug mod gallery mod image view external lib 
    opened by ildar 11
  • APM-0.6.1 Crashes on Android-7.1 - app doesn't open.

    APM-0.6.1 Crashes on Android-7.1 - app doesn't open.

    opened by gppixelworks 9
  • Show metadata in ImageView

    Show metadata in ImageView

    I'd like to have a possibility to show a caption for the photos viewed in A Photo Manager. It might be possible that this already works and I just missed the relevant settings item as I'm new to this app.

    I set various fields in the metadata of a picture using digikam, but I only found them in the "details" view which is way to verbose to look at while browsing the photos of the last vacation.

    Environment

    • Android Version 4.4.4 (CyanogenMod 11 20150901) on Samsung Galaxy S
    • A Photo Manager Version 0.5.2 160726 (via F-Droid)
    enhancement question usability mod image view 
    opened by ukleinek 9
  • Background color: black? (Up to now it is white)

    Background color: black? (Up to now it is white)

    Most image apps use a black background when images get displayed in fullscreen.

    I would prefer black, too.

    What do you think?

    Why did you choose white?

    enhancement help wanted beauty mod image view external lib good first issue 
    opened by guettli 8
  • Copyright violation

    Copyright violation

    Hi @k3b

    I found this app on the Google Play Store. This guy just took your source code, added some ads in it and put it on the Store, without warning this is free software...

    As you are the owner of the source code, feel free to open a request to google here to remove the false app from the Store, if it's your wish ;)

    Don't forget to tell Google that:

    • The app is licensed under GNU GPL v3 license and this guy is violating it;
    • He is falsely claiming he made the app.
    opened by Poussinou 7
  • Thumbnails are huge (same as original image)

    Thumbnails are huge (same as original image)

    My .thumbCache folder is several GB big. The files in this directory are the original images (same size and MD5 sum), but with different file name. Version 0.5.5.161220

    bug mod gallery mod image view not analysed yet external lib 
    opened by Zahnstocher 7
  • Q: how to

    Q: how to "move" tag across hierarchy?

    I have the tag "Unsorted/Peter" and would like to move it to "People/Peter". Is that possible? How? I know how to move it one level down but not to different "Directory".. would ".." work?

    question 
    opened by xandro0777 6
  • Option to change EXIF rating direct in Image-View

    Option to change EXIF rating direct in Image-View

    Is your feature request related to a problem? Please describe. As a user of both Canon DPP and digiKam I'm used to see the five star rating bar together with the photo and not in a seperate view. This Info is he most imporant one to me for choosing the best photos.

    Describe the solution you'd like There should be a five star rating bar on buttom of the Image-View. Maybe this should be a setting if someone is not interested in the rating.

    Describe alternatives you've considered Have the setting bar in a split pane for tablets.

    Additional context None.

    enhancement usability mod image view mod file operations feature request mod exifeditor 
    opened by StefanOltmann 5
  • error when using pictures with others apps

    error when using pictures with others apps

    Hi, after deleting a picture with aPhotoManager, I should be able to use normally gallery and not see this picture anymore. Same for camera which I should be able to use.

    However, when using gallery, the thumb of the deleted picture is still present (not visible, this is the "normal" behavior, but the thumb still take place between other pictures) and when selecting it to watch it, it make gallery app stop. When launching camera after deleting the last photo I took with camera, camera stops immediatly. perhaps because it failed to print the last picture.

    My system is a Samsung S3 with Android 4.2.2 with 3.0.64 kernel version I have this issue with A Photo Manager Version 19 (i.e. 0.5.2.160726) and formerly A Photo Manager Version 17 (i.e. 0.5.0.160629)

    • Affected Module: The real bug does not affect A Photo Manager app but other app wich interact with it, i.e. gallery and camera.
    question external lib 
    opened by FilLupin 5
  • Orientation

    Orientation

    Expected behavior

    ...Display pictures correctly according to their orientation

    Actual behavior

    Portrait Format is mainly displayed as landscape both in gallery-view as well as in image-view mode.

    Environment

    bug mod gallery mod image view 
    opened by Kratsac 5
  • Crash when try to

    Crash when try to "Edit Photo Autoprocessing"

    Describe the bug In the scanning page, when long click one item and try to "Edit Photo Autoprocessing", the app crashed.

    To Reproduce Steps to reproduce the behavior:

    1. Open the app
    2. Click "More options"
    3. Click "More ..."
    4. Click "Media scanner"
    5. Long click a item
    6. Click "Edit Photo Autoprocessing" Then the app crashes.

    Expected behavior Normal operation.

    Smartphone (please complete the following information):

    Screen Record

    https://user-images.githubusercontent.com/119578731/210212607-1b0864cc-5260-4114-9a79-8453e0d85851.mp4

    Crash Report FATAL EXCEPTION: main Process: de.k3b.android.androFotoFinder.debug, PID: 22571 java.lang.RuntimeException: Unable to start activity ComponentInfo{de.k3b.android.androFotoFinder.debug/de.k3b.android.androFotoFinder.PhotoAutoprocessingEditActivity}: java.lang.NullPointerException: Attempt to get length of null array at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) 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:858) Caused by: java.lang.NullPointerException: Attempt to get length of null array at de.k3b.media.PhotoPropertiesUtil.inferAutoprocessingExifDefaults(PhotoPropertiesUtil.java:386) at de.k3b.media.PhotoPropertiesUtil.inferAutoprocessingExifDefaults(PhotoPropertiesUtil.java:374) at de.k3b.android.androFotoFinder.PhotoAutoprocessingEditActivity.onCreate(PhotoAutoprocessingEditActivity.java:218) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6669)  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:858) 

    opened by Terrible-Tornado 0
  • 0.8.4 freeze and crash

    0.8.4 freeze and crash

    Describe the bug 0.8.4 freeze and crash

    To Reproduce Steps to reproduce the behavior:

    1. launch the app, pictures are loaded as expected.
    2. click any one pic, new activity/fragment was launched but picture can't be displayed.
    3. After a moment OS let user choose to wait or exit the app. Choose waiting and after a while the pic can be displayed.
    4. Choose "edit exif" in menu. the app crashed.

    Smartphone (please complete the following information):

    Crash Report --------- beginning of system --------- beginning of crash --------- beginning of main [ 08-20 09:40:43.781 16144:16144 I/k3bFoto ] A Photo Manager (dev) 0.8.4.210419 created

    [ 08-20 09:40:43.990 16144:16144 I/k3b.DocFileTranslator ] DocumentFileTranslator.Root.loaded([/storage/8E93-E325 -> content://com.android.externalstorage.documents/tree/8E93-E325%3A ])

    [ 08-20 09:40:43.992 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#1 dirCache.put(/storage/emulated/0 -> file:///storage/emulated/0) because of init

    [ 08-20 09:40:44.058 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#1 dirCache.put(/storage/8E93-E325 -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3A) because of init

    [ 08-20 09:40:44.104 16144:16144 D/HugeImageLoader ] loadImage( 'AndroidFileFacade: /storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png(content://media/external/file/329614)', 1078x943, max=4096x4096, size=3970k, memory(total/free/avail)=(7097k,1225k,524288k) ) ==> 1078x943, size=3970k, scale=1

    [ 08-20 09:40:44.147 16144:16144 D/HugeImageLoader ] loadImage( 'AndroidFileFacade: /storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png(content://media/external/file/329614)', 1078x943, max=4096x4096, size=3970k, memory(total/free/avail)=(7097k,1168k,524288k) ) ==> 1078x943, size=3970k, scale=1

    [ 08-20 09:40:44.180 16144:16144 D/HugeImageLoader ] loadImage( 'AndroidFileFacade: /storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png(content://media/external/file/329614)', 1078x943, max=4096x4096, size=3970k, memory(total/free/avail)=(7097k,1128k,524288k) ) ==> 1078x943, size=3970k, scale=1

    [ 08-20 09:40:44.255 16144:16209 W/ExifInterface ] Stop reading file since a wrong offset may cause an infinite loop: 0

    [ 08-20 09:40:52.445 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/360 -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.452 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/huiying.tf.data -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.473 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/Telegram -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.491 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/memento -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.510 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/netease -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.562 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/Camera -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.574 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/.tmfs -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.581 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/.thumbnails -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.588 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/Screenshots -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.595 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/.tmsdual -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.615 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/Pindd -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.670 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/ehome -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.686 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/.thumbCache -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:40:52.697 16144:16144 D/k3b.DocFileTranslator ] DocumentFileTranslator#2 dirCache.put(/storage/8E93-E325/DCIM/Alipay -> content://com.android.externalstorage.documents/tree/8E93-E325%3A/document/8E93-E325%3ADCIM%2FCamera) because of getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile

    [ 08-20 09:41:07.915 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile DocumentFileCache.reload cache from (/storage/8E93-E325/DCIM/Camera) ==> 1554 items

    [ 08-20 09:41:07.915 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile DocumentFileCache.findFile(/storage/8E93-E325/DCIM/Camera,cache=true) ==> androidx.documentfile.provider.TreeDocumentFile@ce9605b

    [ 08-20 09:41:07.925 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:07.926 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:07.977 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:07.984 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#Screenshot_20220819_154439_com.xunmeng.pinduoduo.png:cleanup

    [ 08-20 09:41:07.987 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:cleanup

    [ 08-20 09:41:08.001 16144:16144 I/k3b.FileFacade ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png') DocumentFileTranslator.getFromCache(/storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png,dir=false) ==> failed

    [ 08-20 09:41:08.022 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png') findFile DocumentFileCache.reload cache from (/storage/emulated/0/Pictures/Screenshots) ==> 701 items

    [ 08-20 09:41:08.022 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/emulated/0/Pictures/Screenshots/Screenshot_20220819_154439_com.xunmeng.pinduoduo.png') findFile DocumentFileCache.findFile(/storage/emulated/0/Pictures/Screenshots,cache=true) ==> androidx.documentfile.provider.RawDocumentFile@69b24a4

    [ 08-20 09:41:08.024 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#Screenshot_20220819_154439_com.xunmeng.pinduoduo.png:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:08.024 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#Screenshot_20220819_154439_com.xunmeng.pinduoduo.png:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:08.036 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#Screenshot_20220819_154439_com.xunmeng.pinduoduo.png:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:08.043 16144:16144 I/k3b.FileFacade ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') DocumentFileTranslator.getFromCache(/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg,dir=false) ==> failed

    [ 08-20 09:41:22.149 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile DocumentFileCache.reload cache from (/storage/8E93-E325/DCIM/Camera) ==> 1554 items

    [ 08-20 09:41:22.149 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220819_090026.jpg') findFile DocumentFileCache.findFile(/storage/8E93-E325/DCIM/Camera,cache=true) ==> androidx.documentfile.provider.TreeDocumentFile@1b7e710

    [ 08-20 09:41:22.158 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.158 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.182 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.198 16144:16144 I/k3b.FileFacade ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_202156.jpg') DocumentFileTranslator.getFromCache(/storage/8E93-E325/DCIM/Camera/IMG_20220816_202156.jpg,dir=false) ==> failed

    [ 08-20 09:41:22.198 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_202156.jpg') findFile DocumentFileCache.findFile(/storage/8E93-E325/DCIM/Camera,cache=true) ==> androidx.documentfile.provider.TreeDocumentFile@99c643c

    [ 08-20 09:41:22.208 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.208 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.226 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.233 16144:16144 I/k3b.FileFacade ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_202231.jpg') DocumentFileTranslator.getFromCache(/storage/8E93-E325/DCIM/Camera/IMG_20220816_202231.jpg,dir=false) ==> failed

    [ 08-20 09:41:22.233 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_202231.jpg') findFile DocumentFileCache.findFile(/storage/8E93-E325/DCIM/Camera,cache=true) ==> androidx.documentfile.provider.TreeDocumentFile@e98828

    [ 08-20 09:41:22.243 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.243 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.262 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.263 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220819_090026.jpg:cleanup

    [ 08-20 09:41:22.264 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#Screenshot_20220819_154439_com.xunmeng.pinduoduo.png:cleanup

    [ 08-20 09:41:22.270 16144:16144 I/k3b.FileFacade ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_192434.jpg') DocumentFileTranslator.getFromCache(/storage/8E93-E325/DCIM/Camera/IMG_20220816_192434.jpg,dir=false) ==> failed

    [ 08-20 09:41:22.271 16144:16144 I/k3b.DocFileTranslator ] getName:DocumentFileTranslator#2 getDocumentFile('/storage/8E93-E325/DCIM/Camera/IMG_20220816_192434.jpg') findFile DocumentFileCache.findFile(/storage/8E93-E325/DCIM/Camera,cache=true) ==> androidx.documentfile.provider.TreeDocumentFile@162fed4

    [ 08-20 09:41:22.282 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.283 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.305 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix onGlobalLayout mZoomEnabled=true-resetMatrix

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix onGlobalLayout mZoomEnabled=true-resetMatrix

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.343 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix onGlobalLayout mZoomEnabled=true-resetMatrix

    [ 08-20 09:41:22.530 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.531 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202156.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.605 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.605 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_202231.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:22.676 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setRotationTo 0.0

    [ 08-20 09:41:22.676 16144:16144 D/PhotoViewAttacher ] PhotoViewAttacherEx#IMG_20220816_192434.jpg:setImageViewMatrix setImageDrawable-resetMatrix

    [ 08-20 09:41:38.708 16144:16144 E/k3bFoto ] SettingsActivity-SaveLogCat(): => FotoGalleryActivity{(4184)null} [[1]#331469] => ImageDetailActivityViewPager{..0220816_202156.jpg}

    [ 08-20 09:41:38.712 16144:16144 E/k3bFoto ] saving errorlog ('LocCat') to /storage/emulated/0/copy/log/androFotofinder.logcat-20220820-014138.txt

    • [ExternalStorageDirectory] I have pictures both under "/storage/emulated/0" and "/storage/8E93-E325/". The issue happens no matter where the pic is.
    opened by 025nju 0
  • the app throw java.lang.RuntimeException when change language

    the app throw java.lang.RuntimeException when change language

    the environment is as follows:

    App version: v0.8.1.200212
    Android version: 6.0
    Device: Nexux_5X
    

    The steps to reproduce: 10_APhotoManager_RuntimeException.gif The exception log is as follows:

    05-12 13:33:47.380 5136-5136/de.k3b.android.androFotoFinder E/ActivityThread: Performing pause of activity that is not resumed: {de.k3b.android.androFotoFinder/de.k3b.android.androFotoFinder.locationmap.MapGeoPickerActivity}
        java.lang.RuntimeException: Performing pause of activity that is not resumed: {de.k3b.android.androFotoFinder/de.k3b.android.androFotoFinder.locationmap.MapGeoPickerActivity}
            at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3352)
            at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3340)
            at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3315)
            at android.app.ActivityThread.-wrap13(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            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)
    
    bug 
    opened by androidAppGuard 0
  • Images are decoded without checking image size when loaded from a Filemanager in a Nomedia-Folder

    Images are decoded without checking image size when loaded from a Filemanager in a Nomedia-Folder

    When loading an image, Google suggests us to resize the image before decoding them, so as to save memory resource. https://developer.android.com/topic/performance/graphics/load-bitmap.html

    However, in the code below, images are decoded directly without checking image size: de.k3b.android.androFotoFinder.gallery.cursor.GalleryCursorAdapterFromArray.java getView() (line number: 120) https://github.com/k3b/APhotoManager/blob/FDroid/app/src/main/java/de/k3b/android/androFotoFinder/gallery/cursor/GalleryCursorAdapterFromArray.java#L120

    Are these images all of small sizes? Do you think they will affect APhotoManager's performance?

    In addition, getView() is a callback that is frequently invoked in the UI thread. since image decoding is of high time consumption, we can perform these operations in worker threads (e.g., via AsyncTask).

    opened by sunshinelwj 0
  • Performance improvement suggestions

    Performance improvement suggestions

    When loading images, Google suggests us to cache the bitmaps that can be reused, so as to keep a fluid and fast-loading UI. https://developer.android.com/topic/performance/graphics/cache-bitmap.html

    However, in the code below, bitmap caching is not applied: de.k3b.android.androFotoFinder.imagedetail.HugeImageLoader.java loadImage() https://github.com/k3b/APhotoManager/blob/FDroid/app/src/main/java/de/k3b/android/androFotoFinder/imagedetail/HugeImageLoader.java#L75

    I found loadImage() is invoked directly by: de.k3b.android.androFotoFinder.gallery.cursor.GalleryCursorAdapterFromArray.java getView() https://github.com/k3b/APhotoManager/blob/FDroid/app/src/main/java/de/k3b/android/androFotoFinder/gallery/cursor/GalleryCursorAdapterFromArray.java#L99

    getView() is a function that is frequently invoked, which means that there will be many duplicate bitmap objects being created if we not define a cache to store them.

    For performance considerations, maybe we can define memory cache and disk memory cache to store the bitmap objects. Then app can reuse them instead of creating new bitmap objects continuously. In addition, since image decoding is slow, we can perform these operations in worker threads (e.g., via AsyncTask).

    Thanks.

    opened by sunshinelwj 0
Releases(v0.8.3.200315)
  • v0.8.3.200315(Mar 12, 2020)

    • #168: Bugfix crash in "incremental backup to zip-file"
    • translation updates nl, ru, zh-CN
    • APhotoManager is not Android-10 (api-29) ready yet.
    Source code(tar.gz)
    Source code(zip)
  • v0.8.1.200218(Feb 20, 2020)

  • t0.8.0.191121-A10(Nov 21, 2019)

  • v0.8.0.191021(Oct 19, 2019)

    • #108 new: Incremental Backup of Photos to a Zip File
    • #129 Bugfix: Show images with wrong rotation (Exif-Orientation-Flag)
    • #152 Bugfix: Tag-Picker-ShowInNew set wrong tag filter parameters
    • new: The Filter-View shows additional filter parameters from virtual-album-files '*.album'
    • Translation updates: de, ja, nl, ru
    Source code(tar.gz)
    Source code(zip)
  • v0.7.5.190916(Sep 14, 2019)

  • v0.7.4.190801(Aug 2, 2019)

  • v0.7.3.190424(Apr 23, 2019)

    • #135: added support for mapsforge offline maps "v5 format"
    • #132 improved Autoprocessing-Editor: Long press on Exif-Picker butten "..." : get lat/lon/description/tags from selected photos
    • #133: Additional filtercriteria date-last-modified from ... to
    • #21: Translation updates ja, nl, ru, pt-br, uk
    • Bugfix infer DateTimeTaken from exif-TAG_DATETIME if not available in exif-TAG_DATETIME_ORIGINAL
    • Bugfix: A Photo Manger is now listed as provider for "getContent" for photos
    • #139: Bugfix crash after screenrotation in rename
    Source code(tar.gz)
    Source code(zip)
  • v0.7.2.181027(Apr 23, 2019)

    Changes from 0.7.1 to 0.7.2

    • Fixed: Some images where shown with wrong orientation
    • Fixed: Could not start media scanner from gallery menu
    • Folderpicker: animated pathbar makes it discoverable.
    • updated translation: uk (100%), ru (95%)
    Source code(tar.gz)
    Source code(zip)
  • v0.7.1.180830(Apr 23, 2019)

    Changes from 0.7.0 to 0.7.1

    • fixed "open in new ..." bug.
    • Added translation uk

    Changes from 0.6.4 to 0.7.0

    • New Logo/Icons.
    • New Virutal Albums/".album" files.
    • New search bar and "Filter by Date".
    • Translation updates: ar,de,en,es,fr,it,ja,ru,tr,zh-CN (7 = 100%, 5 > 90%, 5 < 65%)
    Source code(tar.gz)
    Source code(zip)
  • v0.7.0.180823(Apr 23, 2019)

    • New Logo/Icons by Md Nazmul Hasan.
    • New Virutal Albums/".album" files: edit with Filter-View; open with Dirpicker for Gallery-View and Geographic-Map.
    • Gallery-View: Added "Filter by Date"; Added search bar.
    • Openstreemap-Display: added optional path/date/tag-filter; fixed: works with zoomfactor > 19; Fixed initial zoom region.
    • Filter-View: In field "Find": allow to search for subexpressions seperated by " "
    • Fixed: Open image via filemanager with app specific content urls (i.e. OI File Manager)
    • Translation updates: ar,de,en,es,fr,it,ja,ru,tr,zh-CN (7 = 100%, 5 > 90%, 5 < 65%
    Source code(tar.gz)
    Source code(zip)
  • v0.6.4.180321(Mar 19, 2018)

    • Subproject Maintenance
      • #116 Hotfix repairing crash in v0.6.4.180314
      • #112 Bugfix AutoProcessingMode Filenamepattern now uses "DatePhotoTaken" instead of "LastModifiedFileDate"
      • #111 AutoProcessingMode Filenamepattern: Popupmenu with foldername based predifined rules
        • Example: When editing .../holidays/2016Teneriffe/Hotel/.apm you can select from popupmenu
          • "2016Teneriffe-Hotel001" and
          • "2016Hotel001"
        • The Date- and Number-rules are those that where used in last ".apm"-edit.
        • The Name-part are based on current folder/parent-folder without the numbers.
      • #110 AutoProcessingMode Filenamepattern: Copy&Past support
        • Enhancement to #93: After "copy" (to clipboard) in folderpicker or AutoProcessingMode-Editor you can "paste" ".apm-Rule-files" in AutoprocessingEditor.
        • If copy-source directory contains a ".apm-Rule-file" the content of AutoProcessingMode-Editor will be replaced by the content of clipboard-.apm file.
        • Intelligent Filenamepattern update: The "name-part" of the Filenamepattern will be updated automatically if it contains foldernames:
        • Example: When copying from .../holidays/2016Teneriffe/Hotel/.apm to ../holidays/2018Crete/Camping/.apm the Filenamepattern "{yyyy}Teneriffe-Hotel{001}" will become "{yyyy}Crete-Camping{001}"
      • #99 add contextmenu "open in filemanager" in dir-picker and imagedetailview:
        • only available if at least one filemanager is installed that supports ACTION_VIEW with mime either "resource/folder" or "vnd.android.document/directory".
        • (i.e. Simple filemanager)
      • #114 Rename Folder (in Dir-Picker) sql update file set path = newBegin + substing(path, begin+len) where path like newBegin+'%' public static final String SQL_EXPR_FOLDER = "substr(" + SQL_COL_PATH + ",1,length(" + SQL_COL_PATH + ") - length(" + MediaStore.Images.Media.DISPLAY_NAME + "))";
      • Updated libraries for OsmDroid and Mapsforge
    Source code(tar.gz)
    Source code(zip)
  • v0.6.4.180314(Mar 15, 2018)

  • v0.6.3.180211(Feb 12, 2018)

    • Subproject Metadata
      • new #105 New mode App protected/pinned(Extended App Pinning) (aka "Kiosk Mode", "LockTask")
        • Allow to savley hand over your phone to someone else and allow him/her to view only those images that you have chosen before.
        • Appplication pinning is part of the Android operating system to lock the current app so that exiting the app or starting an other app is not permitted while pinning is active. Here is an android-5 tutorial.
        • Advanced pinning means that dangerous app-commands like edit/copy/delete/share/settings and changing the basefilter are disabled while the app is pinned.
        • usecase: Filter which photos your customer is allowed to see , enable "appplication pinning(Kiosk Mode)" and hande the android device over to the customer.
      • new #93 Folder based autoprocessing for copy/move photo(s)
        • Example: If you move IMG_20170921_085715.jpg to folder .../holiday/2017Crete/Hotel/ it will be automatically renamed to 201709krete022.jpg and gets tags holiday, greece, krete, hotel if you define a rule for that folder.
        • if a folder name in the folderpicker starts with a leading "..." then there is a ".apm" rulefile
        • the command "Edit Photo Autoprocessing" in the folder-long-press-contextmenu in the folderpicker allows you to edit a ".apm" rulefile
        • example:
          • the folder /sdcard/DCIM/photos/holiday/2017Crete/Hotel has a ".apm" rulefile with these rules
          • filename: [yyyymm]CreteHotel[001]
          • tags: holiday, hotel, greece
          • geo lat/lon: 35.5/23.9
          • title: holyday crete 2017 hotel
        • if you copy/move images to folder /sdcard/DCIM/photos/holiday/2017Crete/Hotel
          • the oldest images (taken in september 2007) will be renamed to 200709CreteHotel001.jpg, the next 200709CreteHotel002.jpg, ...
            • filenames that already follow the naming-rule are not renamed.
          • non empty meta data (tags,geo, description, title, rating, date taken) from ".apm" rulefile will be applied to the images.
            • geo is only applied if the photo does not have geo yet
            • date/time values are relative so you can fix the photo date if you forgot to set camera date
            • title/description starting with "+" will be appended to existing title/description
      • new#100 Mark images as "PRIVATE" and allow filtering include/exclude "PRIVATE". Private Images are hidden from other Gallery-Apps and image pickers by changing media_type to 1001 and fileextension to ".jpg-p".
      • Fix update tags/geo also update lastModified in mediadb (always in format secs since 1970). Else "sort by last modified" does not work.
      • Gallery view: Added sort by (image-)width, (file-)size
    • Translations and Translationupdates:
      • Chinese Simplified (100%) and Chinese Traditional by Liu Feng (pitumaomao)
      • French (100%) by Poussinou and Tuuux
      • Hindi by jznsamuel (jasonsamuel88)
      • Indonesian by riesky and isaideureka
      • Japanese (100%) by naofum
      • Spanish (100%) by Dani Certad (daniconejito)
      • German (100%) and English (100%)
    Source code(tar.gz)
    Source code(zip)
  • Betta105.1-0.6.3(Jan 9, 2018)

    the attachment has the latest betta for

    • #105 (Extended app locking)
    • #100 hide "private" Images
    • and #93 (autoprocessing mode)

    this is release candidate 3

    Last update 2018-02-03

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2.171126(Nov 19, 2017)

  • v0.6.1.170816(Aug 15, 2017)

    Fixed issues:

    • #96: fixed possible app crash on android-7.1
    • #83: thumbnail cache limited to hardcoded limit of 50MB/1024 cache files. If the cache is already bigger than this limit please rename the folder in the settings
    • #21: added missing arabic translations with placeholders.
    Source code(tar.gz)
    Source code(zip)
  • v0.6.1.170803(Aug 2, 2017)

    • Subproject Metadata
      • #87 Edit Exif
      • Added processing support for Tags(keywords), Gps, Title, Descrtiption, Rating in jpg-exif and xmp-sidecar #79 #88 #91 #89 #90
      • new Settings View/Edit/ Write changes to :
        • jpg and xmp (Create xmp if not found)
        • jpg (and xmp if exists)
        • jpg file only
        • xmp file only
      • #84 : Settings View/Edit/ xmp sidecar file name long or short for Digikam compatibility:
        • [X] checked means use long format "file.jpg.xmp" (new in Version 0.6.1)
          • the photo file /path/to/file.jpg will use the sidecar file /path/to/file.jpg.xmp
          • use this setting if you use the pc software digikam to mange your photos
        • [ ] not checked means use short format "file.xmp" (was hardcoded in Version 0.6.0 and before)
          • the photo file /path/to/file.jpg will use the sidecar file /path/to/file.xmp
      • new Settings View/Diagnostics/LogCat jpg+xmp metadata:
        • If enabled: Writes infos about reading/writing metadata of jpg/xmp to logcat.
      • #70 : Optional Context Display/Button in Image-View:
        • Shows additional text that relates to last menucommand and a button to execute the command again. Examples
          • if you called the menu command "Set geo" the context text will show latitude, longitude of the image and the context button will open the "Set geo" command.
          • if you called the menu command "Set tags" the context text will show tags of the image and the context button will open the "Set tags" command.
          • if you called the menu command "Rename" the context text will show file path of the image and the context button will open the "Rename" command.
          • if you called the menu command "Details" the context text will show image-id, file path, lat/lon, tags, title, description, rating of the image and the context button will open the "Details" command.
        • If you know SQL and the properties file format you can define context specific sql-expressions for the context text using a text editor.
    • Subproject Maintenance
      • In the Settings View the options are now grouped (rearanged)
      • Fixed: #82 : Too many pictures listed (not only subdirectories)
      • Fixed: Settings: set thumbnail folder was not working until v0.6.0
      • #21 language translations translations via crowdin.com / stringlate:
        • Chineese (zh-CN traditional and zh-TW simplified) by Liu Feng (pitumaomao) completed (new),
        • Turkish by "srkn" completed,
        • Japanese by "naofum" completed,
        • German and English by "k3b" completed,
      • Fixed: gallery-multi-select: show-in-map => show-in-new-gallery: removed filter "no-geo" from blue markers
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0.170502(May 5, 2017)

    • subproject Metadata
    • subproject Maintenance
      • #76 : Improve Pick Geo from Photo: Userdefined Bookmark filter which photos to show
      • reduced apk-size from 1.7MB to 1.1MB by removing unused library code ("proguard").
      • minor bugfixes
        • reset query to default if sql in bookmark-load-data is not ok
        • DirPicker/DatePicker hide video-only and other non-image picker items
      • Bugfix: #81 GeoMap does not show photo locations anymore. Crash when clicking into the map
      • Bugfix: The Geographic-Map remembers it-s last used lat/lon/zoomlevel which will be restored when it is opened again.
      • Geographic-Map Improvement: Select one or more images in map automatically change visible area (lat/lon/zoomlevel) so that all image positions are visible.
      • Geographic-Map added to contextmenu: Show in new gallery/detailview
      • #21 additional language translations via crowdin.com:
        • russian by "divizdev".
        • Turkish by "erdenerr",
        • arabic by medowill
        • Updates:
          • Japanese by "naofum"
          • Portuguese(Brasilian) by Nana13,
          • Italian by random_r,
          • French by Tuuux
      • Settings View: Added menu to Translate "A Photo Manager" to other languages using the Stringlate app. Option to automatically Install Stringlate from F-Droid app store if not found.

    Note: note please ignore older v0.6.0.xxxxx versions

    v0.6.0.170309 (25), v0.6.0.170315 (26), v0.6.0.170402 (27), v0.6.0.170404 (28), v0.6.0.170421 (29) these are failed atempts to make the next version available in F-Droid appstore

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0.170404(Apr 3, 2017)

  • v0.6.0.170315(Mar 7, 2017)

  • v0.5.5.161220(Dec 19, 2016)

    • #7 Implement picker via gallery with ACTION_GET_CONTENT / ACTION_PICK
      • you can use APhotoManager as an image picker
      • Set Geo: beside picking picking the pos from a map you can also Pick Geo from Photo.
    • fix: pick geo via map with no initial value: use last used value as default for current
    • Exif-Details-View: sorted, more attributes, xmp-sidecarfile-attributes.
    • Folder-Picker Hidden Folders are now displayed as "[...]"
    • Folder-Picker Hidden Folders that can be unhidden by media scanner are now displayed as "*[...]"
    • Folder-Picker added to contextmenu Hide Images: Make all images below this folder invisible
    • Gallery-View contextmenu Start Media Scanner: removes ".nomedia" file to allow "unhide" from "*[...]" folder
    Source code(tar.gz)
    Source code(zip)
  • v0.5.4.161112(Nov 12, 2016)

    • Bugfix: Missing clipboard cut/copy support for some edit fields on small screen
    • Bugfix #71 : Nullpointer exception on image details of whatsapp photo
    • Bugfix #73 : Fix Settings NumberFormatException
    • Bugfix delete multible sometimes did not work anymore
    • Minor improvement in Filter-View:
      • Actionbar icons for cancel/clear/ok instead of pushbuttons that are hidden, when Soft-Keyboard pop-s up
      • Path-field: automatic adding sql wildcard "%" if path does not contain path delimiter "/" or wildcard "%"
    Source code(tar.gz)
    Source code(zip)
  • v0.5.4.161111(Nov 11, 2016)

  • v0.5.3.160927(Sep 26, 2016)

    • #64 : Image edit whithout app choser. After image edit rescan file
    • #60 Add support for org.mapsforge offline maps
    • #62 Added support to display *.gpx and *.kml files as blue markers with popupBubble in map
    • #63 contextmenu "Show Photo(s)" in Geographic-Map and Folder-Picker opens Image-View.
    • #21 additional languages translations via crowdin.com: polish translation by "Maselkowicz". Updates: Italian by "random_r", Japanese by "naofum",Dutch by keunes
    • #58 Open APhotoManager-s APhotoMap when some app wants to open online map like https://maps.google.com/
    • fix: removed unneeded permissions ACCESS_FINE_LOCATION&ACCESS_COARSE_LOCATION inherited from a lib
    • #59 upgrade to osmdroid-5.4 that solves Flickering markers when moving map viewport.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.2.160726(Jul 27, 2016)

    • fixed compatibility issues with android 4.0 (version 14 and 15)
    • #55 fixed orientation problem in imageview
    • updated lib PhotoView to com.github.k3b:PhotoView:v1.2.6.k3b-5-SNAPSHOT
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1.160712(Jul 12, 2016)

    • #21 updated missing italian and japanese translations via crowdwin by "random_r" and "naofum".
    • #54 replaced android-s mediaDB-thumbnails with Sergey Tarasevich's Android-Universal-Image-Loader https://github.com/nostra13/Android-Universal-Image-Loader
      • Settings View: Thumbnail folder defines the filesystem's directory where precalculated-mini-images (thumbnails) are stored and loaded from.
    • #53 performance/quality/thumbnail optimisation for Image-View (improving #10 and #39)
      • There is a new setting Big photo width/height optimisation for Image-View
      • Loading #10 high resolution photos into Image-View may need up to 1,5 seconds thus preventing fast swiping through the images.
      • APhotoManager can load precalculated downscaled mini-versions (a. k. a. thumbnails) which is much faster (< 0.1 seconds) so swiping is possible again.
      • If the photo is bigger than Big-photo-width-height-value then it uses thumbnails to allow fast swiping.
      • Thumbnails means memoryefficient, fast, but lower-quality.
      • As soon as you zoom the full resolution image is loaded.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0.160629(Jun 22, 2016)

    Source code(tar.gz)
    Source code(zip)
  • v0.4.6.160304(Mar 4, 2016)

    Source code(tar.gz)
    Source code(zip)
  • v0.4.5.160221(Feb 21, 2016)

    Bugfix Release:

    • Bugfix: #32 Android5 copy photo failed. Directory picker should only show folders that are not write protexted for photo copy/move
    • Improvement - more Debug support: Settings Dialog allows to clear current LogCat or write current LogCat to file without having a fatal error (Exception). File Operations erros are writen to logCat.
    • Online Help: renamed git repository/wiki url from "AndroFotoFinder" to "APhotoManager"
    • #21 additional languages : Added Romanian translation by mironeasav
    Source code(tar.gz)
    Source code(zip)
  • v0.4.4.160117(Jan 7, 2016)

Owner
k3b
k3b
Gitversion - A native console application to calculate a version based on git commits and tags

GitCommit A native console application to calculate a version based on git commi

Solugo 5 Sep 13, 2022
Access and process various types of personal data in Android with a set of easy, uniform, and privacy-friendly APIs.

PrivacyStreams PrivacyStreams is an Android library for easy and privacy-friendly personal data access and processing. It offers a functional programm

null 269 Dec 1, 2022
Handy library to send & receive command with payload between subscribers for Android.

Commander Handy library to send & receive command with payload between subscribers for Android. Features Subscription based No dependency on Framework

Romman Sabbir 3 Oct 19, 2021
PhotoSync - app to backup photos to your own computer

PeopleInSpace Minimal Kotlin Multiplatform project with SwiftUI, Jetpack Compose

Kyle McBurnett 0 Jan 2, 2022
Android gallery & photo/video functionality simplified with RxJava2

RxGallery Android gallery & photo/video functionality simplified with RxJava2 Setup To use this library your minSdkVersion must be >= 9. Add it in you

Brian Rojas 38 Oct 11, 2022
PubSub - 使用 Kotlin Coroutines 实现的 Local Pub/Sub、Event Bus、Message Bus

PubSub 使用 Kotlin Coroutines 实现的 Local Pub/Sub、Event Bus、Message Bus 下载 将它添加到项目的

Tony Shen 4 May 30, 2022
KmmCaching - An application that illustrates fetching data from remote data source and caching it in local storage

An application that illustrates fetching data from remote data source and caching it in local storage for both IOS and Android platforms using Kotlin Multiplatform Mobile and SqlDelight.

Felix Kariuki 5 Oct 6, 2022
Tell you how to manage your blackhorse

Tell you how to manage your blackhorse

Andong LIAO 19 Nov 9, 2022
Small Android library to help you incorporate MVP, Passive View and Presentation Model patterns in your app

DroidMVP About DroidMVP is a small Android library to help you incorporate the MVP pattern along with Passive View and Presentation Model (yes, those

Andrzej Chmielewski 225 Nov 29, 2022
Native solution for common React Native problem of focused views being covered by soft input view.

react-native-avoid-softinput Native solution for common React Native problem of focused views being covered by soft input view. It is solved by listen

Mateusz Mędrek 312 Jan 2, 2023
BinGait is a tool to disassemble and view java class files, developed by BinClub.

BinGait Tool to diassemble java class files created by x4e. Usage To run BinGait, run java -jar target/bingait-shadow.jar and BinGait will launch. If

null 18 Jul 7, 2022
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Gesture detector framework for multitouch handling on Android, based on Android's ScaleGestureDetector

Android Gesture Detectors Framework Introduction Since I was amazed Android has a ScaleGestureDetector since API level 8 but (still) no such thing as

null 1.1k Nov 30, 2022
Use Android as Rubber Ducky against another Android device

Use Android as Rubber Ducky against another Android device

null 1.4k Jan 9, 2023
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 6, 2023
A logger with a small, extensible API which provides utility on top of Android's normal Log class.

This is a logger with a small, extensible API which provides utility on top of Android's normal Log class. I copy this class into all the little apps

Jake Wharton 9.8k Dec 30, 2022
Java implementation of a Disk-based LRU cache which specifically targets Android compatibility.

Disk LRU Cache A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key and a fixed number of values. Each key m

Jake Wharton 5.7k Dec 31, 2022