├── .github ├── dependabot.yml ├── issue_template.md ├── pull_request_template.md └── workflows │ ├── build.yml │ └── validate-gradle-wrapper.yml ├── .gitignore ├── .gitlab-ci.yml ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── FAQ.md ├── GPLv3.TXT ├── Icons and Images ├── Contributed SVG │ ├── app icon black.svg │ ├── app icon green.svg │ ├── app icon main.svg │ ├── app icon white on blk.svg │ ├── app icon white.svg │ ├── logotype A blk.svg │ ├── logotype A green.svg │ ├── logotype A white.svg │ ├── logotype B blk.svg │ ├── logotype B green.svg │ └── logotype B white.svg ├── main icon design.svg └── social banner.png ├── LICENSE.txt ├── Page Templates ├── A4 with 2 pages - gLabels-qt.glabels ├── A4 with 2 pages.glabels └── A4 with 2 pages.pdf ├── PrivacyPolicy.md ├── README.md ├── SETUP_GUIDELINES.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── about-cs.md │ ├── about-da.md │ ├── about-de.md │ ├── about-el.md │ ├── about-es.md │ ├── about-eu.md │ ├── about-fa.md │ ├── about-fr.md │ ├── about-he.md │ ├── about-in.md │ ├── about-it.md │ ├── about-ja.md │ ├── about-nl.md │ ├── about-pl.md │ ├── about-pt.md │ ├── about-ru.md │ ├── about-tr.md │ ├── about-zh.md │ └── about.md │ ├── ic_launcher-web.png │ ├── java │ └── com │ │ └── todobom │ │ └── opennotescanner │ │ ├── ClickListener.kt │ │ ├── FullScreenImageAdapter.kt │ │ ├── FullScreenViewActivity.kt │ │ ├── GalleryGridActivity.kt │ │ ├── ImageProcessor.java │ │ ├── OpenNoteScannerActivity.kt │ │ ├── OpenNoteScannerApplication.kt │ │ ├── SettingsActivity.kt │ │ ├── SettingsFragment.kt │ │ ├── helpers │ │ ├── AboutFragment.kt │ │ ├── AnimationRunnable.kt │ │ ├── AppConstant.kt │ │ ├── CustomOpenCVLoader.kt │ │ ├── OpenNoteMessage.kt │ │ ├── PdfHelper.kt │ │ ├── PreviewFrame.kt │ │ ├── Quadrilateral.kt │ │ ├── ScanTopicDialogFragment.kt │ │ ├── ScannedDocument.kt │ │ └── Utils.kt │ │ └── views │ │ ├── HUDCanvasView.kt │ │ ├── SquareFrameLayout.kt │ │ └── TagEditorFragment.kt │ └── res │ ├── drawable-hdpi │ └── ic_delete_white_24dp.png │ ├── drawable-mdpi │ └── ic_delete_white_24dp.png │ ├── drawable-xhdpi │ └── ic_delete_white_24dp.png │ ├── drawable-xxhdpi │ └── ic_delete_white_24dp.png │ ├── drawable-xxxhdpi │ └── ic_delete_white_24dp.png │ ├── drawable │ ├── angle.xml │ ├── button_background.xml │ ├── ic_arrow_back_24dp.xml │ ├── ic_camera_green.xml │ ├── ic_done_all_24dp.xml │ ├── ic_find_in_page.xml │ ├── ic_flash_on_24dp.xml │ ├── ic_info_outline_white_24px.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── ic_menu_camera.xml │ ├── ic_menu_gallery.xml │ ├── ic_menu_manage.xml │ ├── ic_menu_pdf.xml │ ├── ic_menu_send.xml │ ├── ic_menu_share.xml │ ├── ic_menu_slideshow.xml │ ├── ic_menu_tag.xml │ ├── ic_monochrome.xml │ ├── ic_palette.xml │ ├── ic_photo_filter_white_24dp.xml │ ├── ic_settings.xml │ ├── ic_tag_bell.xml │ ├── ic_tag_game.xml │ ├── ic_tag_gift.xml │ ├── ic_tag_magnet.xml │ ├── ic_tag_rocket.xml │ ├── ic_tag_star.xml │ ├── ic_tag_tv.xml │ ├── round_button.xml │ └── side_nav_bar.xml │ ├── layout │ ├── about_view.xml │ ├── activity_fullscreen_view.xml │ ├── activity_gallery.xml │ ├── activity_open_note_scanner.xml │ ├── activity_settings.xml │ ├── dialog_scan_topic.xml │ ├── gallery_item.xml │ ├── layout_fullscreen_image.xml │ └── tageditor_view.xml │ ├── menu │ ├── menu_gallery.xml │ └── menu_imagepager.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── values-cs │ └── strings.xml │ ├── values-da │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-eu │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ml │ └── strings.xml │ ├── values-nl │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-w820dp │ └── dimens.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ ├── provider_paths.xml │ └── settings.xml ├── build.gradle.kts ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle.kts /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | target-branch: master 8 | - package-ecosystem: gradle 9 | directory: "/" 10 | schedule: 11 | interval: daily 12 | target-branch: master 13 | -------------------------------------------------------------------------------- /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | Describe your issue here. 2 | 3 | ### Steps to reproduce 4 | Tell us how to reproduce this issue. 5 | 6 | ### Expected behaviour 7 | Tell us what should happen 8 | 9 | ### Actual behaviour 10 | Tell us what happens instead 11 | 12 | ### Would you like to work on the issue? 13 | Tell us if you would like to work on this issue 14 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change. 4 | If there are any UI change, please include the screenshots also. 5 | 6 | If your changes fixes an issue, please include its number using the following line. (Does not apply for translation) 7 | 8 | Fixes #(issue) 9 | 10 | ## Type of change 11 | Just put an x in the [] which are valid. 12 | - [ ] Translation Contribution (non-breaking change which only adds or updates the translation to a language) 13 | - [ ] Bug fix (non-breaking change which fixes an issue) 14 | - [ ] New feature (non-breaking change which adds functionality) 15 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 16 | 17 | # How Has This Been Tested? 18 | 19 | Please describe the tests that you ran to verify your changes. 20 | - [ ] `./gradlew assembleDebug assembleRelease` 21 | - [ ] `./gradlew checkstyle` 22 | 23 | # Checklist: 24 | - [ ] My code follows the style guidelines of this project 25 | - [ ] I have performed a self-review of my own code 26 | - [ ] I have commented my code, particularly in hard-to-understand areas 27 | - [ ] I have made corresponding changes to the documentation 28 | - [ ] My changes generate no new warnings 29 | 30 | # License: 31 | - [X] I hereby declare that all my contributions to this project is licensed using the [GPL Version 3 License](https://github.com/ctodobom/OpenNoteScanner/blob/master/GPLv3.TXT) unless specified directly on source files 32 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build application 2 | 3 | on: [pull_request, push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v3 11 | - name: Set up JDK 11 12 | uses: actions/setup-java@v3 13 | with: 14 | distribution: 'temurin' 15 | java-version: 11 16 | cache: gradle 17 | - name: Build with Gradle 18 | run: ./gradlew build --no-daemon 19 | -------------------------------------------------------------------------------- /.github/workflows/validate-gradle-wrapper.yml: -------------------------------------------------------------------------------- 1 | name: Validate Gradle Wrapper 2 | 3 | on: [pull_request, push] 4 | 5 | jobs: 6 | validation: 7 | name: Validation 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | - uses: gradle/wrapper-validation-action@v1 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.apk 2 | *.iml 3 | .gradle 4 | .idea 5 | *~ 6 | import-summary.txt 7 | /local.properties 8 | **/.idea/workspace.xml 9 | **/.idea/tasks.xml 10 | /.idea/libraries 11 | .DS_Store 12 | /build 13 | /captures 14 | /app/gplay 15 | /app/fdroid 16 | /app/release 17 | **/*/res/values/secrets.xml 18 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | image: openjdk:8-jdk 2 | variables: 3 | ANDROID_COMPILE_SDK: "29" 4 | ANDROID_BUILD_TOOLS: "29.0.2" 5 | ANDROID_SDK_URL: "https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip" # current available in https://developer.android.com/studio/index.html#downloads 6 | before_script: 7 | - apt-get --quiet update --yes 8 | - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 9 | - wget --quiet --output-document=android-tools.zip ${ANDROID_SDK_URL} 10 | - mkdir -p android-sdk-linux/cmdline-tools 11 | - unzip ./android-tools.zip -d android-sdk-linux/cmdline-tools 12 | - export ANDROID_HOME=$PWD/android-sdk-linux 13 | - export ANDROID_SDKMANAGER=${ANDROID_HOME}/cmdline-tools/tools/bin/sdkmanager 14 | - echo y | ${ANDROID_SDKMANAGER} "platforms;android-${ANDROID_COMPILE_SDK}" "platform-tools" "build-tools;${ANDROID_BUILD_TOOLS}" > /dev/null 15 | - export PATH=$PATH:${ANDROID_HOME}/platform-tools/ 16 | - chmod +x ./gradlew 17 | - set +o pipefail 18 | - yes | ${ANDROID_SDKMANAGER} --licenses 19 | - set -o pipefail 20 | 21 | stages: 22 | - build 23 | build: 24 | stage: build 25 | script: 26 | - ./gradlew assembleDebug 27 | artifacts: 28 | paths: 29 | - app/build/outputs/ 30 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | dist: trusty 3 | android: 4 | components: 5 | - platform-tools 6 | - tools 7 | - build-tools-29.0.2 8 | - android-29 9 | - extra-android-support 10 | - extra-android-m2repository 11 | - extra-google-m2repository 12 | 13 | script: ./gradlew build assembleDebug 14 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Join the development 2 | * Before you join development, please set up the project on your local machine, run it and go through the application completely. Press on any button you can find and see where it leads to. Explore.You'll be more familiar with what is where and might even get some cool ideas on how to improve various aspects of the app. 3 | * If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely. 4 | 5 | # Contributing 6 | 7 | When contributing to this repository, please first discuss the change you wish to make via issue. 8 | 9 | ## Pull Request Process 10 | 11 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 12 | build. 13 | 2. Check that there are no conflicts and your request passes [Travis](Travis-ci.org) build. Check the log of the pass test if it fails the build. 14 | 3. Give the description of the issue that you want to resolve in the pull request message. The format of the commit message to be fixed - **Fixes #[issue number] [Description of the issue]** Example: **Fixes #529: Add toast warning in `MainActivity.java`** 15 | 4. Wait for the maintainers to review your pull request and do the changes if requested. 16 | 17 | ## Contributions Best Practices 18 | 19 | ### Commits 20 | 21 | * Write clear meaningful git commit messages (Do read [here](http://chris.beams.io/posts/git-commit/)) 22 | * Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (For more info click [here]( https://github.com/blog/1506-closing-issues-via-pull-requests)) 23 | * When you make very very minor changes to a PR of yours (like for example fixing a failing Travis build or some small style corrections or minor changes requested by reviewers) make sure you squash your commits afterwards so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at [here](https://davidwalsh.name/squash-commits-git )) 24 | * When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change or a link to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker. 25 | 26 | ### Feature Requests and Bug Reports 27 | * When you file a feature request or when you are submitting a bug report to the [issue tracker](https://github.com/ctodobom/OpenNoteScanner/issues), make sure you add steps to reproduce it. Especially if that bug is some weird/rare one. 28 | 29 | ## Code of Conduct 30 | 31 | ### Our Standards 32 | 33 | Examples of behavior that contributes to creating a positive environment 34 | include: 35 | 36 | * Using welcoming and inclusive language 37 | * Being respectful of differing viewpoints and experiences 38 | * Gracefully accepting constructive criticism 39 | * Focusing on what is best for the community 40 | * Showing empathy towards other community members 41 | 42 | ### Our Responsibilities 43 | 44 | Project maintainers are responsible for clarifying the standards of acceptable 45 | behavior and are expected to take appropriate and fair corrective action in 46 | response to any instances of unacceptable behavior. 47 | 48 | Project maintainers have the right and responsibility to remove, edit, or 49 | reject comments, commits, code, issues, and other contributions 50 | that are not aligned to this Code of Conduct, or to ban temporarily or 51 | permanently any contributor for other behavior that they deem inappropriate, 52 | threatening, offensive, or harmful. 53 | 54 | -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | Contributors: 2 | ============= 3 | 4 | Most contributions here are with translations. Please [refer to the Changelog](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) and git history for reference on code contributors 5 | 6 | * Nicolas Raoul - English corrections 7 | * Claudio Arseni - Italian translation 8 | * Francisco Toca - Spanish translation 9 | * [@nebulon42](https://github.com/nebulon42) - German translation 10 | * Ondřej Míchal - Czech translation 11 | * [@nigelinux](https://github.com/nigelinux) - Traditional Chinese (zh-rTW) Translation 12 | * [@SparkyCola](https://github.com/SparkyCola) - help on picture focus enhancements 13 | * [@brenard](https://github.com/brenard) - French translation 14 | * [@naofum](https://github.com/naofum) - Japanese translation 15 | * [@nikoss](https://github.com/nikoss) - Greek translation 16 | * [Arthur Saprunov](https://github.com/Skydragonsz) - Dutch translation 17 | * [@ASMfreaK](https://github.com/ASMfreaK) - Russian translation 18 | * [Yaron Shahrabani](https://github.com/yarons) Hebrew translation 19 | * [@Tobaloidee](https://github.com/Tobaloidee) - Icon design 20 | * [@princekelly1](https://github.com/princekelly1) - Contributed FAQ.md file 21 | * [@dellani](https://github.com/dellani) - German update and corrections 22 | * [@beriain](https://github.com/beriain) - Basque translation 23 | * [@yzqzss](https://github.com/yzqzss) - Simplified Chinese translation - PR #164 24 | * [@zmni](https://github.com/zmni) - Indonesian translation - PR #178 25 | * [@ChristianWilkie](https://github.com/ChristianWilkie) - some cleanups - PR #180 and #181 26 | * [@thrillfall](https://github.com/thrillfall) - scan topic on filename - PR #191 27 | * [@ahangarha](https://github.com/ahangarha) - Persian Translation - PR #194 28 | * [@sturkmen72](https://github.com/sturkmen72) - Turkish Translation - PR #195 29 | * [@yeyeto2788](https://github.com/yeyeto2788) - update on Spanish translation - PR #207 30 | * [@miclill](https://github.com/miclill) - PDF Export feature - commit 3b48cd24ebdb96fc350f305b239fb185090e62b6 31 | * [@shoddysheep](https://github.com/shoddysheep) - Danish translation - PR #259 32 | * [@PatrykMis](https://github.com/PatrykMis) - Polish translation - PR #264 33 | -------------------------------------------------------------------------------- /FAQ.md: -------------------------------------------------------------------------------- 1 | **Q**: What is OpenNoteScanner? 2 | 3 | **A**: OpenNoteScanner is a mobile application which provides users with a simple and easy way of scanning their handwritten notes and also printed documents. 4 | 5 | **Q**: What is OpenCV Manager? 6 | 7 | **A**: OpenCV means **Open Source Computer Vision Library**, This library is used by OpenNoteScanner to enhance images, track, object recognition and detection and panorama stitching. 8 | OpenCV is licensed under (3- clause BSD) for educational and commercial use. 9 | 10 | **Q**: How do I scan documents with OpenNoteScanner? 11 | 12 | **A**: These are the steps to scan a document: 13 | 14 | 1. Place your phone over the document to be scanned and point the camera at the document. 15 | 2. Point the camera so that all of the four corner markers on the screen is placed inside the document. 16 | 3. Click the **camera icon** at the base of the app. 17 | 4. The app will try to detect the document. When the document is detected the app will show an outline around it on the camera screen and a photo will be taken. 18 | 5. Click on the **Image icon** at the top right corner of the screen to view your scanned documents. 19 | 20 | **Q**: Why doesn't the app detect my document? I point the camera at the document and press the trigger button but nothing happens. 21 | 22 | **A**: Here are a few things that might be wrong: 23 | 24 | * You might have activated Automatic Mode. In Automatic Mode the document must contain a custom QR code that triggers detection. Switch to Manual Mode by pressing the **Automatic Mode icon** in the toolbar. 25 | 26 | * Make sure that the contrast between the document and the background is high enough. For example, if the page color is white then the background should be as dark as possible. 27 | 28 | * Try to scan with the camera flash activated for better lighting. Activate the flash by tapping the **flash icon** in the toolbar. 29 | 30 | * Make sure that all of the four corner markers on the camera screen is placed inside the document. 31 | 32 | **Q**: Where do I find my captured documents? 33 | 34 | **A**: Click on the **Image icon** at the top right corner of the screen, here you can view your scanned documents from the app. 35 | 36 | **Q**: Where are the captured documents stored on my device? 37 | 38 | **A**: They are stored by default in your device internal storage memory under the folder named **OpenNoteScanner**: 39 | 40 | **Q**: Can I change the default folder? 41 | 42 | **A**: Yes, by clicking the **horizontal broken lines** at the top of the screen. click the **settings icon**, scroll down to the section (storage folder), select it and input the name of your preferred folder and click **ok** 43 | 44 | **Q**: Can storage location be changed from device internal storage to **SD Card**? 45 | 46 | **A**: Unfortunately **No**, storage location is set at device internal storage. 47 | 48 | **Q**: My captured documents are in black and white, I need some color? 49 | 50 | **A**: Click the **horizontal broken lines** at the top of the screen, and click the color platelet icon and the menu tray to activate color mode, click the platelet again to get back the default black and white mode. 51 | 52 | **Q**: I am in a dark place and need to capture a document? 53 | 54 | **A**: You can activate the flash light mode by clicking the **horizontal broken lines** at the top of the screen, and click the flash light icon on the menu tray. This activates the flash light of your device camera to enable visible capturing of the documents. 55 | 56 | **Q**: How can I contact the maintainers? 57 | 58 | **A**: To contact us, please click on the **horizontal broken lines** at the top of the screen, and select **settings icon** from the menu tray, scroll down to **feedback and suggestions** and select any of the communication channel listed. 59 | 60 | * Via GitHub. 61 | * Via Telegram. 62 | * Via Email. 63 | 64 | Thank you for using our app, if you like the app and want to make a donation, go to the **Buy me a coffee** section at the settings page of the app. 65 | 66 | -------------------------------------------------------------------------------- /Icons and Images/Contributed SVG/app icon black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Icons and Images/Contributed SVG/app icon green.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 23 | 24 | 25 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Icons and Images/Contributed SVG/app icon main.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 9 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Icons and Images/Contributed SVG/app icon white on blk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Icons and Images/Contributed SVG/app icon white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | 35 | 36 | 37 | 38 | 39 | 41 | 43 | 44 | 45 | 46 | 47 | 49 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 72 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /Icons and Images/main icon design.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /Icons and Images/social banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allgood/OpenNoteScanner/15c1788267b88f261f5758365fbb606dcb1ea648/Icons and Images/social banner.png -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2016 - Claudemir Todo Bom 2 | 3 | Software licensed under the GPL version 3 available in GPLv3.TXT and 4 | online on http://www.gnu.org/licenses/gpl.txt. 5 | 6 | Use parts from other developers, sometimes with small changes, 7 | references on autorship and specific licenses are on individual 8 | source files. 9 | -------------------------------------------------------------------------------- /Page Templates/A4 with 2 pages.glabels: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allgood/OpenNoteScanner/15c1788267b88f261f5758365fbb606dcb1ea648/Page Templates/A4 with 2 pages.glabels -------------------------------------------------------------------------------- /Page Templates/A4 with 2 pages.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allgood/OpenNoteScanner/15c1788267b88f261f5758365fbb606dcb1ea648/Page Templates/A4 with 2 pages.pdf -------------------------------------------------------------------------------- /PrivacyPolicy.md: -------------------------------------------------------------------------------- 1 | Privacy Policy 2 | ============== 3 | 4 | [Claudemir Todo Bom](https://github.com/ctodobom) is the lead developer and maintainer of Open Note Scanner. 5 | 6 | This document serves as an informative texts to users and prospective users of this app about the policies involved in the usage of the app. 7 | 8 | Any future changes on this policy will be stated here and inside the app. 9 | 10 | ### Collected Information 11 | Open Note Scanner only collects anonymous usage data, which is enabled by default, when download via your device play store **Google Play**, it can be disabled/enabled on the settings page of the app. 12 | 13 | ### Google Play version specific 14 | Version on Google Play since version 1.0.36 does use the AdMob platform to show ads and also Google Play in-app purchase to get donations. Those libraries have specific privacy policies that can be read on the following links: 15 | 16 | [AdMob](https://www.google.com/policies/privacy/) 17 | [Google Play Services](https://support.google.com/admob/answer/6128543?hl=en) 18 | 19 | ### Contact us 20 | 21 | If you have any question for the developer, you can check the [FAQ](https://github.com/ctodobom/OpenNoteScanner/blob/master/FAQ.md) section for answers. 22 | -------------------------------------------------------------------------------- /SETUP_GUIDELINES.md: -------------------------------------------------------------------------------- 1 | ## Remote Configuration 2 | After you clone the repository the default remote is `origin` and it refers to your fork on Github. You must keep track of the changes made to the original repository by setting up another remote named `upstream`. 3 | 4 | 1. Open terminal in your repository and type
`git remote add origin https://github.com/YOUR_USERNAME/OpenNoteScanner.git` 5 | 2. Type
` git remote add upstream https://github.com/ctodobom/OpenNoteScanner.git `
to add upstream. 6 | 3. Type ` git remote -v ` and you should see
7 | ``` 8 | origin https://github.com/YOUR_USERNAME/OpenNoteScanner.git (fetch) 9 | origin https://github.com/YOUR_USERNAME/OpenNoteScanner.git (push) 10 | upstream https://github.com/ctodobom/OpenNoteScanner.git (fetch) 11 | upstream https://github.com/ctodobom/OpenNoteScanner.git (push) 12 | ``` 13 | 14 | To now update your local copy type
`git fetch upstream`
`git merge upstream/master`
`git push` 15 | 16 | ## Steps for creating a Pull Request 17 | 18 | 1. Checkout to the master branch `git checkout master` 19 | 2. Sync `git pull` 20 | 3. Start a new branch with a suitable name `git checkout -b branch_name` 21 | 4. Develop a new feature or solve an existing issue 22 | 5. Add the changed files `git add file_name` 23 | 6. Commit with a suitable message `git commit -m " Changes made "` 24 | 7. Push `git push origin branch_name` 25 | 8. Go to the Github Repository and create a pull request according to the [PULL_REQUEST_TEMPLATE](https://github.com/ctodobom/OpenNoteScanner/blob/master/.github/pull_request_template.md). 26 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.application") 3 | kotlin("android") 4 | } 5 | 6 | android { 7 | compileSdk = 33 8 | buildToolsVersion = "33.0.0" 9 | namespace = "com.todobom.opennotescanner" 10 | compileOptions { 11 | sourceCompatibility = JavaVersion.VERSION_11 12 | targetCompatibility = JavaVersion.VERSION_11 13 | } 14 | kotlinOptions { 15 | jvmTarget = JavaVersion.VERSION_11.toString() 16 | } 17 | defaultConfig { 18 | applicationId = "com.todobom.opennotescanner" 19 | minSdk = 21 20 | targetSdk = 31 21 | versionCode = 36 22 | versionName = "1.0.36" 23 | } 24 | buildTypes { 25 | getByName("release") { 26 | isMinifyEnabled = false 27 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 28 | } 29 | } 30 | flavorDimensions += "version" 31 | productFlavors { 32 | create("fdroid") { 33 | dimension = "version" 34 | applicationIdSuffix = "" 35 | versionNameSuffix = "-fdroid" 36 | } 37 | create("gplay") { 38 | dimension = "version" 39 | applicationIdSuffix = "" 40 | versionNameSuffix = "-gplay" 41 | } 42 | } 43 | lint { 44 | abortOnError = false 45 | } 46 | } 47 | 48 | dependencies { 49 | implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) 50 | 51 | implementation("androidx.core:core-ktx:1.9.0") 52 | implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10") 53 | 54 | implementation("androidx.exifinterface:exifinterface:1.3.6") 55 | testImplementation("junit:junit:4.13.2") 56 | implementation("androidx.appcompat:appcompat:1.6.1") 57 | implementation("androidx.fragment:fragment-ktx:1.5.5") 58 | implementation("com.google.android.material:material:1.8.0") 59 | implementation("com.google.zxing:core:3.5.1") 60 | implementation("com.github.ctodobom:OpenCV-3.1.0-Android:9e00ee4218ca0c9e60a905c9f09bf499f9dc5115") 61 | implementation("us.feras.mdv:markdownview:1.1.0") 62 | implementation("com.github.ctodobom:drag-select-recyclerview:0.3.4.ctodobom.sections") 63 | implementation("com.github.allgood:Android-Universal-Image-Loader:717a00c") 64 | implementation("com.github.ctodobom:FabToolbar:3c5f0e0ff1b6d5089e20b7da7157a604075ae943") 65 | implementation("com.github.matomo-org:matomo-sdk-android:4.1.4") 66 | implementation("com.github.MikeOrtiz:TouchImageView:3.3") 67 | 68 | val itextpdf_version = "7.2.5" 69 | implementation("com.itextpdf:kernel:$itextpdf_version") 70 | implementation("com.itextpdf:layout:$itextpdf_version") 71 | implementation("com.itextpdf:io:$itextpdf_version") 72 | } 73 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/allgood/android-sdk-linux/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 26 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 51 | 52 | 53 | 54 | 55 | 58 | 62 | 67 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /app/src/main/assets/about-cs.md: -------------------------------------------------------------------------------- 1 | Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Tato aplikace poskytuje rychlý způsob pořízení a uložení vašich poznámek, náčrtů, nákupních lístků a jiných dokumentů. Také podporuje automatické zachycení obrázků na [předformátované stránce](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licence 10 | ------- 11 | 12 | Tato aplikace je volně přístupná díky [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Zdrojový kód je [dostupný na GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Dotace 15 | --------- 16 | 17 | Tvorba aplikací pro Android není mým povoláním. Tuto aplikaci jsem udělal ze zvědavosti, protože je mnoho podobných aplikací, které bohužel nejsou volně přístupné. 18 | 19 | Pokud si myslíš, že je tato aplikace nebo některý z mých příspěvků hodná nějakého peněžního obnosu a přeješ-li si přispět, můžeš tak učinit pomocí Paypal, Bitcoin nebo Dogecoin. 20 | 21 | [Podpoř přes Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **UPOZORNĚNÍ:** Odkaz ke kryptoměnám funguje pouze tehdy, pokud máte aplikaci k tomu určenou na svém zařízení! 24 | 25 | [Podpoř přes Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Podpoř přes Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Součásti třetích stran a požadavky 31 | ---------------------------------- 32 | 33 | Binární sestavení obsahuje kódy z těchto externích projektů: 34 | 35 | * [OpenCV Library pro Android](http://www.opencv.org) 36 | * [MarkdownView od Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView od Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader od Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Chtěl bych poděkovat 42 | ------ 43 | 44 | ### Přispěvatelům 45 | 46 | Vzhledem k tomu, že je aplikace volně přístupná, příspěvky jsou velmi vítané. Všichni, kteří přispějí jakýmkoli kódem, budou uvedeni zde. 47 | 48 | * Nicolas Raoul - Anglická korekce 49 | * Claudio Arseni - Italský překlad 50 | * Francisco Toca - Španělský překlad 51 | * [@nebulon42](https://github.com/nebulon42) - Německý překlad 52 | * [@HarryPhoon] (https://github.com/HarryPhoon) - Český překlad 53 | * [@nigelinux](https://github.com/nigelinux) - Čínský (tradiční) překlad 54 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - překlad do holandštiny 55 | * Naofumi Fukue - japonský překlad 56 | * [@ASMfreaK](https://github.com/ASMfreaK) - překlad do ruštiny 57 | 58 | Ostatní lidé pomohli [nahlášením problémů](https://github.com/ctodobom/OpenNoteScanner/issues) a poskytnutím informací přes [skupinu na Telegramu](https://t.me/OpenNoteScanner). Jejich pomoc je taktéž velmi ceněna. 59 | 60 | ### Externí kód 61 | 62 | Tato aplikace by nebyla možná bez skvělého materiálu vytvořeného komunitou. Především bych chtěl poděkovat autorům důležitých částí, které jsem našel na internetu a použil ve svém kódu: 63 | 64 | * [Android-er / Zobrazení v mřížce](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 65 | * [Android Hive / Zobrazení obrázku na celou obrazovku](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 66 | * [Adrian Rosebrock z pyimagesearch.com za excelentní tutoriál, jak manipulovat s obrázky](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 67 | * [Gabriele Mariotti / O tom, jak vložit sekce do RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 68 | -------------------------------------------------------------------------------- /app/src/main/assets/about-da.md: -------------------------------------------------------------------------------- 1 | Omkring Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Dette program giver en hurtig måde til at scanne og gemme håndskrevne noter, kunst, indkøbskvitteringer og andre dokumenter. Det understøtter også automatisk optagelse af billeder på en [præ-formateret side](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licens 10 | ------- 11 | 12 | Dette program er gjort tilgængeligt gennem [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Source koden er [tilgængelig på GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donationer 15 | --------- 16 | 17 | At lave Android-programmer er ikke mit primære job, Jeg lavede dette program ud af ren nysgerrighed, og fordi der er snesevis af apps med lignende formål, men ingen af dem er open source. 18 | 19 | Hvis du mener, at dette program eller nogle af mine bidrag er lidt penge værd, og du er villig til at betale for det, er du velkommen til give en donation, uanset beløb, via PayPal, Bitcoin eller DogeCoin. 20 | 21 | [Donér gennem Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **VÆR OPMÆRKSOM:** Links til cryptovaluta fungerer kun, hvis du har appen til den pågældende mønt installeret! 24 | 25 | [Donér gennem Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Donér gennem Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Tredjepartsdele og krav 31 | ---------------------------------- 32 | 33 | Binære Builds omfatter kode fra disse eksterne projekter: 34 | 35 | * [OpenCV Library til Android](http://www.opencv.org) 36 | * [MarkdownView fra Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView fra Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader fra Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Tak 42 | ------ 43 | 44 | ### Bidragsydere 45 | 46 | Som et open source program, er bidrag altid velkommen. 47 | 48 | De fleste oversættere er angivet i [CONTRIBUTORS.md filen](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) og kodebidragsyere er angivet i [Changelog filen](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) og [commits historikken](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | Andre hjalp ved at indsende [Problemrapporter](https://github.com/ctodobom/OpenNoteScanner/issues) og indsende information gennem [Telegramgruppen](https://t.me/OpenNoteScanner). Deres hjælp er også værdsat. 51 | 52 | ### Ekstern kode 53 | 54 | Dette program ville ikke være muligt uden det fantastiske materiale, som fællesskabet har produceret. Jeg vil gerne sige særligt tak til forfatterne af vigtige dele, som jeg har fundet på internettet og brugt i koden: 55 | 56 | * [Android-er / GridView kode sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock fra pyimagesearch.com for den fremragende vejledning om, hvordan man håndtérer billederne](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / Om hvordan man implementérer sektioner i RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-de.md: -------------------------------------------------------------------------------- 1 | Über Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Diese Anwendung bietet eine einfache Möglichkeit handgeschriebene Notizen und Zeichnungen, Rechnung und andere Dokumente zu scannen und zu speichern. Sie unterstützt auch das automatische Erfassen von Bildern auf einer [vorformatierten Seite](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Lizenz 10 | ------- 11 | 12 | Diese Anwendung steht unter der [GNU General Public License Version 3](http://www.gnu.org/licenses/gpl.txt). Der Quellcode ist [auf GitHub verfügbar](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Spenden 15 | --------- 16 | 17 | Android Anwendungen zu erstellen ist nicht mein Brotjob. Ich habe diese Anwendung aus Neugierde erstellt und weil es Dutzende ähnliche Anwendungen gibt, von denen aber keine Freie Software ist. 18 | 19 | Wenn Sie finden, dass diese Anwendung oder irgendeiner meiner Beiträge etwas Geld wert ist und Sie dafür bezahlen wollen, dann bitte spenden Sie doch einen Betrag Ihrer Wahl über Paypal, Bitcoin oder Dogecoin. 20 | 21 | [Spenden mit Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ACHTUNG:** Links zu Kryptowährungen funktionieren nur, wenn Sie die App für diese Währung installiert haben! 24 | 25 | [Spenden mit Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Spenden mit Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Drittanbieter-Code und Anforderungen 31 | ---------------------------------- 32 | 33 | Binär-Builds enthalten Code von diesen externen Projekten: 34 | 35 | * [OpenCV Library für Android](http://www.opencv.org) 36 | * [MarkdownView von Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView von Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader von Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Danke 42 | ------ 43 | 44 | ### Mitwirkende 45 | 46 | Wie bei Freier Software üblich, sind Beiträge immer willkommen. Jeder, der Code beiträgt wird hier aufgelistet. 47 | 48 | * Nicolas Raoul - Korrekturen an der englischen Übersetzung 49 | * Claudio Arseni - Italienische Übersetzung 50 | * Francisco Toca - Spanische Übersetzung 51 | * [@nebulon42](https://github.com/nebulon42) - Deutsche Übersetzung 52 | * Ondřej Míchal - Tschechische Übersetzung 53 | * [@nigelinux](https://github.com/nigelinux) - Übersetzungen in traditionelles Chinesisch (zh-rTW) 54 | * [@nikoss](https://github.com/nikoss) - Griechische Übersetzung 55 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - Übersetzung ins Niederländische 56 | * Naofumi Fukue - Japanische Übersetzung 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - Übersetzung ins Russische 58 | 59 | Weitere Menschen haben [Fehlermeldungen](https://github.com/ctodobom/OpenNoteScanner/issues) erstellt und Informationen über die [Telegram Gruppe](https://t.me/OpenNoteScanner) bereitgestellt. Diese Hilfe wird auch sehr geschätzt. 60 | 61 | ### Externer Code 62 | 63 | Diese Anwendung wäre ohne die großartigen Beiträge der Community nicht möglich. Ich möchte mich speziell bei den Autoren von essentiellen Teilen bedanken, deren Arbeit ich aus dem Internet habe und in meinem Code verwendet habe: 64 | 65 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 66 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 67 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 68 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 69 | -------------------------------------------------------------------------------- /app/src/main/assets/about-el.md: -------------------------------------------------------------------------------- 1 | Σχετικά με τον Ανοιχτό Σαρωτή Σημειώσεων 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Αυτή η εφαρμογή προσφέρει έναν εύκολο τρόπο για τη σάρωση, και την αποθήκευση, χειρόγραφων σημειώσεων και καλλιτεχνημάτων, καθώς και αποδείξεων αγοράς ή άλλων εγγράφων. Επίσης, υποστηρίζει την αυτόματη σύλληψη εικόνων σε μια [προ-μορφοποιημένη σελίδα](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Άδεια 10 | ------- 11 | 12 | Αυτή η εφαρμογή διατίθεται υπό την [GNU Γενική Δημόσια Άδεια, έκδοση 3](http://www.gnu.org/licenses/gpl.txt). Ο Πηγαίος κώδικας είναι [διαθέσιμος στο GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Δωρεές 15 | --------- 16 | 17 | Η δημιουργία εφαρμογών για το Ανντρόιντ δεν είναι η κύρια εργασία μου· δημιούργησα αυτή την εφαρμογή από περιέργεια, και επειδή υπάρχουν ντουζίνες από εφαρμογές με παρόμοιους σκοπούς, αλλά καμία τους δεν είναι ανοιχτού κώδικα. 18 | 19 | Αν νομίζεις πως αυτή η εφαρμογή, ή οποιαδήποτε από τις συνεισφορές μου, αξίζει κάποια χρήματα, και αν είσαι πρόθυμος να πληρώσεις γι αυτή, παρακαλώ, νιώσε ελεύθερος να κάνεις μία δωρεά μέσω του Paypal, του Bitcoin ή του Dogecoin. 20 | 21 | [Δωρεά μέσω του Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ΠΡΟΣΟΧΗ:** Οι δεσμοί προς τα κρυπτονομίσματα λειτουργούν μόνο αν έχεις εγκατεστημένη την εφαρμογή για το συγκεκριμένο νόμισμα. 24 | 25 | [Δωρεά μέσω του Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Δωρεά μέσω του Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Μέρη τρίτων και απαιτήσεις 31 | ---------------------------------- 32 | 33 | Οι Δυαδικές συνθέσεις περιέχουν κώδικα από αυτά τα εξωτερικά εγχειρήματα: 34 | 35 | * [OpenCV Library για το Android](http://www.opencv.org) 36 | * [MarkdownView από τον Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView από τον Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader από τον Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Ευχαριστίες 42 | ------ 43 | 44 | ### Έχουν συνεισφέρει 45 | 46 | Σαν εφαρμογή ανοιχτού κώδικα, οι συνεισφορές είναι. πάντα, ευπρόσδεκτες. Οποιοσδήποτε υποβάλει οποιοδήποτε κώδικα θα αναφέρεται εδώ. 47 | 48 | * Nicolas Raoul - Αγγλικές διορθώσεις 49 | * Claudio Arseni - Ιταλική μετάφραση 50 | * Francisco Toca - Ισπανική μετάφραση 51 | * [@nebulon42](https://github.com/nebulon42) - Γερμανική μετάφραση 52 | * Ondřej Míchal - Τσέχικη μετάφραση 53 | * [@nigelinux](https://github.com/nigelinux) - Παραδοσιακή Κινέζικη (zh-rTW) μετάφραση 54 | * [@nikoss](https://github.com/nikoss) - Ελληνική μετάφραση 55 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - μετάφραση στα ολλανδικά 56 | * Naofumi Fukue - Ιαπωνική μετάφραση 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - μετάφραση στα ρωσικά 58 | 59 | Άλλοι άνθρωποι έχουν βοηθήσει με την [Αναφορά Θεμάτων](https://github.com/ctodobom/OpenNoteScanner/issues), και έχουν δώσει πληροφορίες μέσω της [Ομάδας του Telegram](https://t.me/OpenNoteScanner). Η βοήθειά τους εκτιμάται, επίσης. 60 | 61 | ### Εξωτερικός κώδικας 62 | 63 | Αυτή η εφαρμογή δεν θα είχε δημιουργηθεί χωρίς το σπουδαίο υλικό που παράγεται από την κοινότητα. Θα ήθελα να δώσω ειδικές ευχαριστίες στους συγγραφείς απαραίτητων τμημάτων που έλαβα από το διαδίκτυο και χρησιμοποιούνται στον κώδικα: 64 | 65 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 66 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 67 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 68 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 69 | -------------------------------------------------------------------------------- /app/src/main/assets/about-es.md: -------------------------------------------------------------------------------- 1 | Acerca de Open Note Scanner 2 | =========================== 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Esta aplicación proporciona una manera rápida de escanear y almacenar notas escritas a mano y diseños, así como recibos de la compra y otros documentos. También soporta la captura automática de imágenes de una [página pre-formateada](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licencia 10 | -------- 11 | 12 | Esta aplicación está disponible a través de la [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). El código fuente está [disponible en GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donaciones 15 | ---------- 16 | 17 | El desarrollo de aplicaciones en android no es mi trabajo, yo hago esta aplicación por curiosidad y porque hay docenas de aplicaciones con objetivos similares pero ninguna es código abierto. 18 | 19 | Si tu crees que esta aplicación o alguna de mis contribuciones vale la pena gastar un poco de dinero y estás dispuesto a pagarlo, por favor no dudes en hacer alguna donación a través de Paypal, Bitcoin o Dogecoin. 20 | 21 | [Donar a través de Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ATENCIÓN:** El enlace a criptomonedas funciona únicamente si tienes la aplicación de esta moneda instalada! 24 | 25 | [Donar a través de Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Donar a través de Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Partes de terceros y requerimientos 31 | ---------------------------------- 32 | 33 | El binario compilado incluye código desde estos proyectos externos: 34 | 35 | * [OpenCV Library para Android](http://www.opencv.org) 36 | * [MarkdownView de Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView de Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader de Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Gracias 42 | ------- 43 | 44 | ### Colaboradores 45 | 46 | Como cualquier aplicación de código abierto, las contribuciones siempre son bienvenidas. Todo aquel que suministre código será añadido aquí. 47 | 48 | * Nicolas Raoul - Correciones en inglés 49 | * Claudio Arseni - Traducción al italiano 50 | * [@franciscot](https://github.com/franciscot) Francisco Toca / [@yeyeto2788](https://github.com/yeyeto2788) Juan Biondi - Traducción al español 51 | * [@nebulon42](https://github.com/nebulon42) - Traducción al alemán 52 | * Ondřej Míchal - Traducción al Checo 53 | * [@nigelinux](https://github.com/nigelinux) - Traducción al chino tradicional (zh-rTW) 54 | * [@nikoss](https://github.com/nikoss) - traducción al griego 55 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - traducción al holandés 56 | * Naofumi Fukue - Traducción japonesa 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - traducción al ruso 58 | 59 | Otra gente que ayudaron suministrando [reportes de casos](https://github.com/ctodobom/OpenNoteScanner/issues) y aportando información a través del [Grupo de Telegram](https://t.me/OpenNoteScanner). Su ayuda es apreciada también. 60 | 61 | ### Código de terceros 62 | 63 | Esta aplicación no sería posible sin el gran material producido por la comunidad. Me gustaría dar especialmente las gracias a los autores de partes esenciales que yo tomé de internet y he usado en el código: 64 | 65 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 66 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 67 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 68 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 69 | -------------------------------------------------------------------------------- /app/src/main/assets/about-eu.md: -------------------------------------------------------------------------------- 1 | Open Note Scanneri buruz 2 | ========================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Aplikazio honek eskuz idatzitako ohar eta artelanak, baita erosketa agiriak eta beste dokumentuak ere eskaneatu eta gordetzeko modu bizkor bat ematen du. Irudien atzemate automatikoa onartzen du ere [aurrez formateatutako orrietan](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Lizentzia 10 | --------- 11 | 12 | Aplikazio hau [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt) lizentziapean dago eskuragarri. Iturburu kodea [GitHuben eskuratu daiteke](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Dohaintzak 15 | ---------- 16 | 17 | Androiderako aplikazioak egitea ez da nire lanbidea, aplikazio hau jakin-minagatik eta antzeko helburua duten baina kode irekikoak ez diren hamaika aplikazio daudelako egin dut. 18 | 19 | Aplikazio honek edo nire ekarpenetako edozeinek zerbait balio dutela uste baduzu eta ordaintzeko prest bazaude, mesedez eman ezazu zerbait Paypal, Bitcoin edo Dogecoin bitartez. 20 | 21 | [Paypal bidez dohaintza egin](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ERNE:** Kriptotxanponen estekek txanpon horretarako aplikaziorik instalatuta baduzu funtzionatuko dute soilik! 24 | 25 | [Bitcoin bidez dohaintza egin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Dogecoin bidez doahintza egin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Hirugarrenen zati eta betebeharrak 31 | ---------------------------------- 32 | 33 | Fitxategi binarioek hurrengo kanpoko proiektuen kodea daramate: 34 | 35 | * [OpenCV Library Androiderako](http://www.opencv.org) 36 | * [Feras Alnatshehen MarkdownView](https://github.com/falnatsheh/MarkdownView) 37 | * [Mike Ortizen TouchImageView](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Sergey Tarasevichen Android Universal Image Loader](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Esker onak 42 | ---------- 43 | 44 | ### Laguntzaileak 45 | 46 | Kode irekiko aplikazio bezala, ekarpenak beti dira ongi etorriak. Edozein kode bidaltzen duen edonor hemen agertuko da. 47 | 48 | * Nicolas Raoul - Ingeleseko zuzenketak 49 | * Claudio Arseni - Italierazko itzulpena 50 | * Francisco Toca - Gaztelerazko itzulpena 51 | * [@nebulon42](https://github.com/nebulon42) - Alemanezko itzulpena 52 | * Ondřej Míchal - Txekierazko itzulpena 53 | * [@nigelinux](https://github.com/nigelinux) - Tradiziozko txinerako (zh-rTW) itzulpena 54 | * Naofumi Fukue - Japonierazko itzulpena 55 | * [@nikoss](https://github.com/nikoss) - Grekozko itzulpena 56 | * [Arthur Saprunov](https://github.com/Skydragonsz) - Nederlanderazko itzulpena 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - Errusierazko itzulpena 58 | * [Yaron Shahrabani](https://github.com/yarons) Hebreerazko itzulpena 59 | * [@Tobaloidee](https://github.com/Tobaloidee) - Ikonoaren diseinua 60 | * [@beriain](https://github.com/beriain) - Euskarazko itzulpena 61 | 62 | Beste batzuk [arazo txostenak](https://github.com/ctodobom/OpenNoteScanner/issues) bidaltzen eta [Telegrameko taldea](https://t.me/OpenNoteScanner)ren bitartez informazioa emanez lagundu dute. Haien laguntza aintzat hartzekoa da ere. 63 | 64 | ### Kanpoko kodea 65 | 66 | Aplikazio hau ez litzateke posible komunitateak sortutako material bikainarik gabe. Bereziki eskertu nahiko nituzke internetetik hartu eta kodean erabili ditudan ezinbesteko zatien egileak: 67 | 68 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 69 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 70 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 71 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 72 | -------------------------------------------------------------------------------- /app/src/main/assets/about-fa.md: -------------------------------------------------------------------------------- 1 | دربارهٔ Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | این برنامه، روشی سریع برای اسکن و ذخیره یادداشت‌ها و طراحی‌های دستی، به همراه رسیدهای خرید و دیگر اسناد فراهم می‌آورد. این برنامه همچنین از گرفتن تصویر در [صفحه پیش‌قالب‌بندی‌شده](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf) پشتیبانی می‌کند.. 7 | 8 | 9 | پروانه 10 | ------- 11 | 12 | این برنامه تحت [پروانه عمومی همگانی گنو نسخه ۳](http://www.gnu.org/licenses/gpl.txt) منتشر شده است. کد منبع [روی گیت‌هاب](http://github.com/ctodobom/OpenNoteScanner) دردسترس قرار دارد.. 13 | 14 | حمایت مالی 15 | --------- 16 | 17 | ساخت برنامه‌های اندروید، کار اصلی من نیست و این برنامه را از سر کنجکاوری و اینکه بین برنامه‌های مشابه دیگر در بازار، هیچ کدام آزاد و متن باز نیستند ساخته‌ام. 18 | 19 | اگر فکر می‌کنید این برنامه یا هر یک از مشارکت‌های من ارزش مقداری پول را دارد و شما هم تمایل به پرداخت آن دارید، می‌توانید از طریق پی‌پال، بیت‌وین یا داگ‌کوین این حمایت را انجام دهید 20 | 21 | [حمایت از طریق پی‌پال](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | 24 | **توجه:** پیوند به رمزارزها تنها زمانی کار می‌کند که شما برنامه خاص آن رمزارز را نصب کرده باشید! 25 | 26 | [حمایت از طریف بیت‌کوین](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 27 | 28 | [حمایت از طریق داگ‌کوین](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 29 | 30 | 31 | بخش‌های مربوط به اشخاص ثالث و نیازمندی‌ها 32 | ---------------------------------- 33 | 34 | نسخه دودویی ساخته شده، مشتمل بر کدهایی از این پروژه‌های خارجی است: 35 | 36 | * [OpenCV Library for Android](http://www.opencv.org) 37 | * [MarkdownView from Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 38 | * [TouchImageView from Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 39 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 40 | * [Android Universal Image Loader from Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 41 | 42 | سپاس 43 | ------ 44 | 45 | ### مشارکت‌کنندگان 46 | 47 | به عنوان یک نرم‌افزار آزاد و متن باز، همواره از مشارکت استقبال می‌شود. 48 | 49 | اکثر مشارکت‌کنندگان در ترجمه در [پرونده CONTRIBUTORS.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) و مشارکت‌کنندگان در کدنویسی در [پرونده تغییرات](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) و [تاریخچه کامیت‌ها](https://github.com/ctodobom/OpenNoteScanner/commits) فهرست شده‌اند. 50 | 51 | سایر افراد از طریق [گزارش مشکلات](https://github.com/ctodobom/OpenNoteScanner/issues) و دادن اطلاعات از طریق [گروه تلگرام](https://t.me/OpenNoteScanner) کمک کرده‌اند. از کمک آن‌ها نیز سپاس‌گزاریم. 52 | 53 | ### کدهای خارجی 54 | این برنامه بدون استفاده از برنامه‌های ارزندهٔ دیگری که توسط جامعه نرم‌افزار آزاد تولید شده‌اند امکان وجود نداشت. تمایل دارم تشکر ویژه خودم را از پدیدآورندگان بخش‌های اساسی‌ای که روی اینترنت یافته و در برنامه از آن‌ها استفاده کرده‌ام ابراز کنم: 55 | 56 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-fr.md: -------------------------------------------------------------------------------- 1 | Open Note Scanner 2 | ================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Cette application permet de numériser et d'enregistrer facilement des notes manuscrites, des dessins ou encore des tickets de caisse et autres documents. Elle permet également la numérisation automatique d'images à partir de [page pré-formattée](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licence 10 | ------- 11 | 12 | Cette application est publiée sous la licence [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Le code source de l'application [est diponible sur GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Dons 15 | ---- 16 | 17 | La création d'application Android n'est pas mon métier principal, je développe cette application par curiosité et parce qu'il existe des dizaines d'applications avec des objectifs similaires mais qu'aucune n'est libre. 18 | 19 | Si vous pensez que cette application ou une autre de mes contributions vaut un peu d'argent et vous êtes disposé à payer pour cela, n'hésitez pas à faire un don via Paypal, Bitcoin or Dogecoin. 20 | 21 | [Donner via Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ATTENTION:** Les liens vers des dons en crypto-monnaies ne fonctionnent que si vous avez installé une application pour celles-ci ! 24 | 25 | [Donner via Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Donner via Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Applications tierces et requises 31 | -------------------------------- 32 | 33 | Les fichiers binaires incluent du code de ces projets externes : 34 | 35 | * [Librairie OpenCV pour Android](http://www.opencv.org) 36 | * [MarkdownView de Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView de Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader de Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Remerciements 42 | ------------ 43 | 44 | ### Contributeurs 45 | 46 | Comme il s'agit d'une application libre, les contributions sont toujours les bienvenues. Toute personne ayant soumis du code sera listée ici. 47 | 48 | La plupart des contributions aux traductions sont dans [CONTRIBUTORS.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) et les contributeurs de code sont dans [CHANGELOG.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) et [l'histoire des commits](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | D'autres personnes ont contribué en déposant des [rapports de bugs](https://github.com/ctodobom/OpenNoteScanner/issues) et en fournissant des informations via le [groupe Telegram](https://t.me/OpenNoteScanner). Leur aide est appréciée également. 51 | 52 | ### Code externe 53 | 54 | Cette application n'aurait pu exister sans le superbe matériel produit par la communauté. Je voudrais remercier tout particulièrement les auteurs des sources essentielles que j'ai consultées sur Internet et utilisées dans le code : 55 | 56 | * [Android-er / L'exemple de code d'utilisation de GridView](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock de pyimagesearch.com pour son excellent tutoriel sur la manière de traiter les images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / Tutoriel sur la manière d'implémenter les sections avec le RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-he.md: -------------------------------------------------------------------------------- 1 | על אודות Open Note Scanner 2 | ========================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | יישומון זה מציע דרך קלה לסחור ולאחסן פתקים שנכתבו בכתב יד, לרבות יצירות אמנות, קבלות על קניות ומגוון מסמכים אחרים. היישומון גם תוך בלכידה אוטומטית של תמונות ב[עמוד שתוכן למטרה זו מראש](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | רשיון 10 | ------- 11 | 12 | יישומון זה כפוף ל[גרסה 3 של הרישיון הציבורי הכללי של GNU](http://www.gnu.org/licenses/gpl.txt). קוד המקור [זמין לקהל הרחב דרך GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | תרומות 15 | --------- 16 | 17 | פיתוח יישומון ל־Android אינה העבודה העיקרית שלי, פיתחתי את היישומון הזה מתוך סקרנות וגם מכיוון שישנם מגוון יישומונים עם מטרות דומות אך אף אחד מהם אינו בקוד פתוח. 18 | 19 | אם לדעתך היישומון שלי או כל תרומה אחרת שלי שווה כסף ובא לך לשלם עליה, נא להרגיש חופשי לתרום דרך PayPal, ביטקוין או Dogecoin. 20 | 21 | [תרומה דרך Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **לתשומת לבך:** הקישור למטבעות קריפטוגרפיים עובד רק אם יש לך את היישומון של אותו המטבע מותקן! 24 | 25 | [תרומה דרך Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [תרומה דרך Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | רכיבי צד שלישי ודרישות 31 | ---------------------------------- 32 | 33 | הגרסה הבינרית כוללת קוד מהמיזמים החיצוניים האלה: 34 | 35 | * [ספריית OpenCV ל־Android](http://www.opencv.org) 36 | * [MarkdownView מאת Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView מאת Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [תצוגת Drag Select Recycler](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader מאת Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | תודות 42 | ------ 43 | 44 | ### תורמים 45 | 46 | בתור יישומון בקוד פתוח, אנו תמיד שמחים לקבל תרומות. כל מי שיתרום קוד יופיע כאן. 47 | 48 | * ניקולס ראול - תיקונים באנגלית 49 | * קלאודיו ארסני - תרגום לאיטלקית 50 | * פרנסיסקו טוקה - תרגום לספרדית 51 | * [@nebulon42](https://github.com/nebulon42) - תרגום לגרמנית 52 | * אונג'יי מיכה - תרגום לצ׳כית 53 | * [@nigelinux](https://github.com/nigelinux) - תרגום לסינית מסורתית (zh-rTW) 54 | * [@nikoss](https://github.com/nikoss) - תרגום ליוונית 55 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - תרגום להולנדית 56 | * נאופומי פוקואה - תרגום ליפנית 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - תרגום לרוסית 58 | 59 | אנשים נוספים סייעו על ידי [דיווח על תקלות](https://github.com/ctodobom/OpenNoteScanner/issues) וגם על ידי שיתוף הבעיה ב[קבוצת הטלגרם](https://t.me/OpenNoteScanner). עזרתם מוערכת גם כן. 60 | 61 | ### קוד חיצוני 62 | 63 | יישומון זה לא היה קורם עור וגידים ללא החומרים הנהדרים שנוצרו על ידי הקהילה. ברצוני להודות במיוחד ליוצרי החלקים החיוניים בהם נתקלתי באינטרנט והשתמשתי בהם בקוד: 64 | 65 | * [Android-er / דוגמית קוד GridView](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 66 | * [Android Hive / עימוד תמונה במסך מלא ](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 67 | * [אדריאן רוזברוק מ־pyimagesearch.com על המדריך המצוין על אופן הטיפול בתמונות](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 68 | * [גבריאל מריוטי / על איך לייבא מקטעים ב־RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 69 | -------------------------------------------------------------------------------- /app/src/main/assets/about-in.md: -------------------------------------------------------------------------------- 1 | Tentang Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Aplikasi ini menyediakan cara yang cepat untuk memindai dan menyimpan seni dan catatan tangan, kuitansi dan juga dokumen lainnya. Mendukung pengambilan otomatis gambar pada [halaman pra-format](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Lisensi 10 | ------- 11 | 12 | Aplikasi ini berada dibawah naungan [Lisensi Publik Umum GNU versi 3](http://www.gnu.org/licenses/gpl.txt). Kode sumber aplikasi [tersedia di GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donasi 15 | --------- 16 | 17 | Mengembangkan aplikasi Android bukanlah pekerjaan utama saya, saya membuat aplikasi ini berawal dari rasa penasaran dan juga karena banyak sekali aplikasi serupa dengan fungsi yang sama tetapi tidak satupun yang bersumber terbuka. 18 | 19 | Jika menurut anda aplikasi ini atau kontribusi saya layak untuk dihargai, dan jika anda berkenan, jangan ragu untuk donasi melalui Paypal, Bitcoin atau Dogecoin. 20 | 21 | [Donasi melalui Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **PERHATIAN:** Tautan ke cryptocoin hanya bisa bekerja jika anda telah memasang aplikasi untuk mengelola koin tersebut! 24 | 25 | [Donasi melalui Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Donasi melalui Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Pustaka dan paket pihak ketiga 31 | ---------------------------------- 32 | 33 | Binari aplikasi mengandung kode dari proyek eksternal berikut ini: 34 | 35 | * [Pustaka OpenCV untuk Android](http://www.opencv.org) 36 | * [MarkdownView dari Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView dari Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader dari Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Terima kasih 42 | ------ 43 | 44 | ### Kontribusi 45 | 46 | Sebagai aplikasi yang bersumber terbuka, segala jenis kontribusi akan selalu diterima. 47 | 48 | Sebagian besar kontributor terjemahan dicatat dalam [berkas CONTRIBUTORS.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) dan kontributor kode dicatat dalam [berkas Catatan Perubahan](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) dan [riwayat commit](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | Yang lainnya membantu dengan mengirim [Laporan Masalah](https://github.com/ctodobom/OpenNoteScanner/issues) dan info terkait melalui [Grup Telegram](https://t.me/OpenNoteScanner). Bantuan mereka sangat saya hargai. 51 | 52 | ### Kode eksternal 53 | 54 | Aplikasi ini tidak akan bisa dikembangkan tanpa bantuan material yang dibuat oleh komunitas. Saya ingin memberikan penghargaan tertinggi untuk para pengembang yang karyanya saya temukan di Internet dan saya gunakan dalam aplikasi ini: 55 | 56 | * [Contoh kode Android-er / GridView](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock dari pyimagesearch.com untuk tutorial tentang bagaimana cara mengolah gambar](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / Tentang bagaimana mengimplementasikan bagian-bagian di dalam RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-it.md: -------------------------------------------------------------------------------- 1 | Informazioni su Open Note Scanner 2 | ================================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Questa applicazione offre una rapida soluzione per acquisire e archiviare note scritte a mano e disegni, oltre a liste della spesa e altri documenti. Supporta anche l'acquisizione automatica di immagini su una [pagina pre-formattata](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licenza 10 | ------- 11 | 12 | Questa applicazione è distribuita secondo i termini della [GNU General Public License versione 3](http://www.gnu.org/licenses/gpl.txt). Il codice sorgente è [disponibile su GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donazioni 15 | --------- 16 | 17 | La creazione di applicazioni Android non è il mio lavoro principale, ho creato questa applicazione per curiosità e perché ci sono dozzine di applicazioni con obiettivi simili ma nessuna di queste è open source. 18 | 19 | Se pensate che questa applicazione o qualunque mia altra attività meritino un contributo e siete disposti a pagare per questo, sentitevi liberi di fare una donazione usando Paypal, Bitcoin o Dogecoin. 20 | 21 | [Dona con Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ATTENZIONE:** i collegamenti alle criptovalute funzionano solo se è installata una applicazione per gestire tali pagamenti! 24 | 25 | [Dona con Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Dona con Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Componenti di terze parti e requisiti 31 | ------------------------------------- 32 | 33 | Questa applicazione contiene codice dai seguenti progetti esterni: 34 | 35 | * [Libreria OpenCV per Android](http://www.opencv.org) 36 | * [MarkdownView di Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView di Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader di Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Ringraziamenti 42 | -------------- 43 | 44 | ### Contributi 45 | 46 | Come applicazione open source, i contributi sono sempre benvenuti. 47 | 48 | La maggior parte dei contributi alla traduzione sono elencati nel file [CONTRIBUTORS.md file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md), mentre i contributi al codice sono nel [Changelog](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) e nella [cronologia dei commit](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | Altre persone hanno aiutato con le [segnalazioni di errori](https://github.com/ctodobom/OpenNoteScanner/issues) e dando informazioni attraverso il [gruppo Telegram](https://t.me/OpenNoteScanner). Anche il loro aiuto è molto apprezzato. 51 | 52 | ### Codice esterno 53 | 54 | Questa applicazione non sarebbe stata realizzabile senza il grande materiale prodotto dalla comunità. Uno speciale ringraziamento agli autori di parti essenziali che ho trovato su internet e di cui ho utilizzato il codice: 55 | 56 | * [Android-er / esempi di codice per GridView](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock da pyimagesearch.com per il fantastico tutorial su come gestire le immagini](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / Come implementare le sezioni in RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-ja.md: -------------------------------------------------------------------------------- 1 | Open Note Scanner について 2 | ========================== 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | このアプリケーションは素早く手書きのメモやアート、ショッピングのレシートやその他の文書をスキャンして保存する方法を提供します。 また [あらかじめフォーマットされたページ](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf) 画像の自動キャプチャもサポートしています。 7 | 8 | 9 | ライセンス 10 | ---------- 11 | 12 | このアプリケーションは [GNU GPL バージョン 3](http://www.gnu.org/licenses/gpl.txt) で利用できます。 ソースコードは [GitHub で利用できます](http://github.com/ctodobom/OpenNoteScanner)。 13 | 14 | 寄付 15 | ---- 16 | 17 | Android アプリケーションを作成することは私の主要な仕事ではありません。私はこのアプリケーションを好奇心から作成しました。同様の目的を持った数十ものアプリケーションがありますが、どれもオープンソースではないからです。 18 | 19 | このアプリケーションや私の貢献に価値があり、あなたが支払ってもよいと思っていただくのでであれば、Paypal、Bitcoin、Dogecoin で寄付をしてください。 20 | 21 | [Paypal で寄付](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **注意:** 暗号通貨のリンクは、そのコインのアプリがインストールされている場合にのみ機能します! 24 | 25 | [Bitcoin で寄付](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Dogecoin で寄付](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | サードパーティの部品と要件 31 | -------------------------- 32 | 33 | バイナリビルドには、これらの外部プロジェクトのコードが含まれています: 34 | 35 | * [OpenCV Library for Android](http://www.opencv.org) 36 | * [MarkdownView from Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView from Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader from Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | 謝辞 42 | ---- 43 | 44 | ### 貢献者 45 | 46 | オープンソース アプリケーションとして、貢献は常に歓迎です。 コードを提出するすべての人がここにリストされます。 47 | 48 | * Nicolas Raoul - 英語の訂正 49 | * Claudio Arseni - イタリア語翻訳 50 | * Francisco Toca - スペイン語翻訳 51 | * [@nebulon42](https://github.com/nebulon42) - ドイツ語翻訳 52 | * Ondřej Míchal - チェコ語翻訳 53 | * [@nigelinux](https://github.com/nigelinux) - 繁体中国語 (zh-rTW) 翻訳 54 | * [@naofum] - 日本語翻訳 55 | * [@nikoss](https://github.com/nikoss) - ギリシャ語への翻訳 56 | * [Arthur Saprunov](https://github.com/Skydragonsz) - オランダ語翻訳 57 | * [@ASMfreaK](https://github.com/ASMfreaK) - ロシア語の翻訳 58 | * [Yaron Shahrabani](https://github.com/yarons) ヘブライ語翻訳 59 | * [@Tobaloidee](https://github.com/Tobaloidee) - アイコンデザイン 60 | 61 | [問題の報告](https://github.com/ctodobom/OpenNoteScanner/issues) を提出して支援したり [Telegram グループ](https://t.me/OpenNoteScanner) で情報を提供してくれた他の人々。 彼らの支援も高く評価しています。 62 | 63 | ### 外部コード 64 | 65 | このアプリケーションは、コミュニティによって作られた素晴らしい素材がなければ不可能でした。 私はインターネットで入手して、コードに使用した重要な部品の作者に特別な感謝をしたいと思います: 66 | 67 | * [Android-er / GridView コードサンプル](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 68 | * [Android Hive / フルスクリーン イメージページャ](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 69 | * [画像の操作方法に関する優れたチュートリアルの pyimagesearch.com の Adrian Rosebrock](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 70 | * [Gabriele Mariotti / RecyclerView でセクションの実装方法について](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 71 | -------------------------------------------------------------------------------- /app/src/main/assets/about-nl.md: -------------------------------------------------------------------------------- 1 | Over Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Deze applicatie biedt een snelle manier om handgeschreven notities en tekeningen te scannen en op te slaan, evenals kassaticketten en andere documenten. Het ondersteunt ook het automatisch vastleggen van afbeeldingen op een [voorgeformatteerde pagina](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licentie 10 | ------- 11 | 12 | Deze applicatie is beschikbaar gemaakt via de [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Broncode is beschikbaar op [GitHub](https://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donaties 15 | --------- 16 | 17 | Het maken van Android-applicaties is niet mijn vaste job/werk, ik heb deze applicatie gemaakt uit nieuwsgierigheid en omdat er tientallen apps zijn met vergelijkbare doelen, maar geen van hen is open source. 18 | 19 | Als je denkt dat deze applicatie of een van mijn bijdragen wat geld waard is en je bereid bent ervoor te betalen, aarzel dan niet om een ​​donatie te doen via Paypal, Bitcoin of Dogecoin. 20 | 21 | [Doneer via Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **LET OP:** Link naar cryptocoins werkt alleen als er een app voor die munt geïnstalleerd staat! 24 | 25 | [Doneer via Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Doneer via Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Onderdelen en vereisten van derden 31 | ---------------------------------- 32 | 33 | Binaire builds bevatten code van deze externe projecten: 34 | 35 | * [OpenCV Library voor Android](https://www.opencv.org) 36 | * [MarkdownView van Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView van Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader van Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Bedankt 42 | ------ 43 | 44 | ### Contributors 45 | 46 | Als open source-applicatie is een bijdrage altijd welkom. Iedereen die een code indient, wordt hier vermeld. 47 | 48 | De meeste vertaalbijdragen worden vermeld in het [CONTRIBUTORS.md-bestand](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) en codebijdragers worden vermeld in het [Changelog-bestand](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) en de [commits-geschiedenis](https://github.com/ctodobom/OpenNoteScanner/commits) 49 | 50 | Andere mensen hebben geholpen bij het indienen van [Issuerapporten](https://github.com/ctodobom/OpenNoteScanner/issues) en het geven van informatie via de [Telegram Group](https://t.me/OpenNoteScanner). Hun hulp wordt ook gewaardeerd. 51 | 52 | ### Externe code 53 | 54 | Deze toepassing zou niet mogelijk zijn zonder het fantastische materiaal geproduceerd door de gemeenschap. Ik wil speciaal de auteurs van essentiële onderdelen die ik op het internet heb gekregen en gebruikt in de code, bedanken: 55 | 56 | * [Android-er / GridView-codevoorbeeld](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Afbeelding op volledig scherm](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock van pyimagesearch.com voor de uitstekende zelfstudie over hoe met de afbeeldingen om te gaan](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / Over hoe u secties in de RecyclerView kunt implementeren](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-pl.md: -------------------------------------------------------------------------------- 1 | O Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Aplikacja ta umożliwia szybkie skanowanie i przechowywanie odręcznych notatek i dzieł sztuki, a także paragonów zakupowych i innych dokumentów. Obsługuje również automatyczne przechwytywanie obrazów na [wstępnie sformatowanej stronie](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | Licencja 10 | ------- 11 | 12 | Ta aplikacja jest udostępniana na licencji [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Kod źródłowy jest [dostępny na GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Dotacje 15 | --------- 16 | 17 | Tworzenie aplikacji na Androida nie jest moim głównym zajęciem, stworzyłem tę aplikację z ciekawości oraz, ponieważ - wprawdzie istnieją dziesiątki aplikacji o podobnych celach - żadna z nich nie jest open source. 18 | 19 | Jeśli uważasz, że ta aplikacja lub jakikolwiek mój wkład są wart trochę pieniędzy i jesteś gotów za to zapłacić, możesz przekazać darowiznę za pośrednictwem Paypal, Bitcoin lub Dogecoin 20 | 21 | [Przekaż dotację za pomocą PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **UWAGA:** Linki do kryptowalut działają tylko wtedy, gdy masz zainstalowaną aplikację dla danej waluty! 24 | 25 | [Przekaż dotację za pomocą Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Przekaż dotację za pomocą Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Części zewnętrzne i wymagania 31 | ---------------------------------- 32 | 33 | Kompilacje binarne zawierają kod z tych zewnętrznych projektów: 34 | 35 | * [Biblioteka OpenCV dla Android](http://www.opencv.org) 36 | * [MarkdownView od Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView od Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader od Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Podziękowania 42 | ------ 43 | 44 | ### Współtwórcy 45 | 46 | Jako w aplikację open source, wkład jest zawsze mile widziany. 47 | 48 | Większość współtwórców tłumaczeń jest wymienionych w [pliku CONTRIBUTORS.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md); współtwórców kodu w [pliku listy zmian](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) i w [historii wkładów](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | Inne osoby pomogły w przesyłaniu [Raportów o Problemach](https://github.com/ctodobom/OpenNoteScanner/issues) i udzielaniu informacji za pośrednictwem [Grupy na Telegramie](https://t.me/OpenNoteScanner). Ich pomoc jest również doceniana. 51 | 52 | ### Kod zewnętrzny 53 | 54 | Ta aplikacja nie byłaby możliwa bez świetnego materiału stworzonego przez społeczność. Chciałbym szczególnie podziękować autorom najważniejszych części, które znalazłem w internecie i wykorzystałem w kodzie: 55 | 56 | * [Android-er / próbka kodu GridView](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock z pyimagesearch.com za doskonały tutorial dotyczący obsługi obrazów](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / O tym, jak wdrożyć sekcje w RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-pt.md: -------------------------------------------------------------------------------- 1 | Sobre o Open Note Scanner 2 | ========================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Este aplicativo fornece uma maneira rápida para escanear e armazenar anotações, artes e também recibos e outros documentos. Ele também suporta a captura automática a partir de uma [página pré-formatada](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | Licença 9 | ------- 10 | 11 | Esta aplicação está disponibilizada através da [Licença GNU GPL versão 3](http://www.gnu.org/licenses/gpl.txt). Source code is [available on GitHub](http://github.com/ctodobom/OpenNoteScanner). 12 | 13 | Doações 14 | ------- 15 | 16 | Desenvolver aplicativos Android não é meu trabalho principal, eu desenvolvi este aplicativo por curiosidade e também pelo fato de existir dezenas de aplicativos com objetivos similares, porém nenhum deles em código aberto. 17 | 18 | Se você acredita que este aplicativo ou qualquer outra das minhas contribuições valem algum dinheiro e está disposto a pagar por ele, sinta-se livre para fazer qualquer doação através do Paypal, Bitcoin ou Dogecoin. 19 | 20 | [Doar através do Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ATDTX7DZ93YRN) 21 | 22 | **ATENÇÃO:** Os atalhos para as moedas criptográficas abaixo funcionam apenas se você tiver os respectivos aplicativos instalados! 23 | 24 | [Donate through Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 25 | 26 | [Donate through Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 27 | 28 | 29 | Código de terceiros e dependências 30 | ---------------------------------- 31 | 32 | O aplicativo inclui código das seguintes fontes: 33 | 34 | * [Biblioteca OpenCV para Android](http://www.opencv.org) 35 | * [MarkdownView de Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 36 | * [TouchImageView de Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 37 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 38 | * [Android Universal Image Loader de Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 39 | 40 | Agradecimentos 41 | -------------- 42 | 43 | ### Colaboradores 44 | 45 | Contribuições com traduções estão listadas no [arquivo CONTRIBUTORS.md](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md), contribuições de código são creditadas no [arquivo de Changelog](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) e no [histórico de commits](https://github.com/ctodobom/OpenNoteScanner/commits) 46 | 47 | Outras pessoas ajudaram enviando [Relatórios de Bugs](https://github.com/ctodobom/OpenNoteScanner/issues) e fornecendo informações pelo [grupo no Telegram](https://t.me/OpenNoteScanner). Esta ajuda também é muito apreciada. 48 | 49 | ### Código de terceiros 50 | 51 | Este aplicativo não seria possível sem o ótimo material produzido pela comunidade. Eu gostaria de dar agradecimentos especiais para os autores de partes essenciais que encontrei na internet e utilizei no código: 52 | 53 | * [Android-er / Exemplo do código GridVew](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 54 | * [Android Hive / Paginador de imagens em tela cheia](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 55 | * [Adrian Rosebrock do pyimagesearch.com pelo excelente tutorial em como manipular as imagens](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 56 | * [Gabriele Mariotti / sobre como implementar seções no RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 57 | -------------------------------------------------------------------------------- /app/src/main/assets/about-ru.md: -------------------------------------------------------------------------------- 1 | О программеOpen Note Scanner 2 | ============================ 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Приложение предоставляет быстрый способ сканирования и хранения рукописных записей, рисунков, а также чеков и других документов. Оно поддерживает способы автоматического захвата изображений на [предформатированной табличке](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | Лицензия 9 | -------- 10 | Приложение распространяется по условиям [GNU General Public License версии 3](http://www.gnu.org/licenses/gpl.txt). Исходный код доступен на [GitHub](http://github.com/ctodobom/OpenNoteScanner). 11 | 12 | Пожертвования 13 | ------------- 14 | 15 | Создание приложений на Android - не моя основная работа. Я создал это приложение из любопытства и из-за того, что существует множество похожих приложений, но ни одно из них не является приложением с открытым кодом. 16 | 17 | Если вы думаете, что это приложение или любой из моих вкладов в открытое программное обеспечение стоит некоторого количества денег и готовы заплатить мне, то вы можете это сделать путё мпожертвования через Paypal, Bitcoin или Dogecoin. 18 | 19 | [Пожертвовать через Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 20 | 21 | **Внимание:** Ссылка на криптовалюту работает только если у вас установлено соответствующее приложение: 22 | 23 | [Donate through Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 24 | 25 | [Donate through Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 26 | 27 | 28 | Части из других источников и зависимости 29 | ---------------------------------------- 30 | 31 | Бинарные сборки включают код из следующих внешних проектов: 32 | 33 | * [Библиотека OpenCV для Android](http://www.opencv.org) 34 | * [MarkdownView от Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 35 | * [TouchImageView от Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 36 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 37 | * [Android Universal Image Loader от Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 38 | 39 | Благодарности 40 | ------------- 41 | 42 | ### Соавторы 43 | 44 | Так как это - приложение с открытым исходным кодом, дополнения и улучшения всегда привествуются. Каждый, кто вносит свой вклад кодом в развитие проекта, будет перечислен здесь. 45 | 46 | * Nicolas Raoul - коррекция английского текста 47 | * Claudio Arseni - перевод на итальянский 48 | * Francisco Toca - перевод на испанский 49 | * [@nebulon42](https://github.com/nebulon42) - перевод на немецкий 50 | * Ondřej Míchal - перевод на чешский 51 | * [@nigelinux](https://github.com/nigelinux) - перевод на традиционный китайский (zh-rTW) 52 | * [@nikoss](https://github.com/nikoss) - перевод на греческий 53 | * [@SkyDragonsz](https://github.com/SkyDragonsz) - перевод на голладский 54 | * Naofumi Fukue - перевод на японский 55 | * [@ASMfreaK](https://github.com/ASMfreaK) - перевод на русский 56 | 57 | Другие люди помогали, рассказывая о ошибках и внося предложения в разделе [Issue на GitHub](https://github.com/ctodobom/OpenNoteScanner/issues) и [группу в Telegram](https://t.me/OpenNoteScanner). Их помощь также ценится. 58 | 59 | ### Внешний код 60 | 61 | Это приложение было бы невозможно без замечательных материалов, созданных сообществом. Я бы хотел отдельно поблагодарить авторов важных вещей, которые я прочитал в Интернете и использовал в коде: 62 | 63 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 64 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 65 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 66 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 67 | -------------------------------------------------------------------------------- /app/src/main/assets/about-tr.md: -------------------------------------------------------------------------------- 1 | Open Note Scanner Hakkında 2 | ========================== 3 | 4 | **© 2020 [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | Bu uygulama elle yazılmış notları, alışveriş makbuzlarını ve benzeri diğer belgeleri taramak ve saklamak için hızlı bir yol sağlar. Aynı zamanda görüntülerin otomatik olarak taranmasını mümkün kılan [hazır şablonu](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf) kullanabilirsiniz. 7 | 8 | 9 | Lisans 10 | ------ 11 | 12 | Bu program [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt) sayfasında belirtilen esaslara uygun olarak kullanıma sunulmuştur. Programın kaynak kodlarına [GitHub sayfasından](http://github.com/ctodobom/OpenNoteScanner) ulaşabilirsiniz. 13 | 14 | Bağışlar 15 | -------- 16 | 17 | Android uygulamaları yapmak benim ana işim değil, bu uygulamayı meraktan ve benzer hedeflere sahip düzinelerce uygulama olmasına rağmen hiçbirinin açık kaynaklı olmaması sebebiyle yazdım. 18 | 19 | Bu uygulamanın veya katkılarımın herhangi birinin paraya değer olduğunu düşünüyorsanız ve bunun için ödeme yapmak istiyorsanız, lütfen Paypal, Bitcoin veya Dogecoin aracılığıyla herhangi bir bağış yapmaktan çekinmeyin. 20 | 21 | [Donate through Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **UYARI:** Kripto para linkleri sadece ilgili kripto paranın uygulaması yüklü ise çalışır! 24 | 25 | [Bitcoin bağışı](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Dogecoin bağışı](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Üçüncü taraf parçaları ve gereksinimleri 31 | ---------------------------------------- 32 | 33 | Programın derlemmiş hali, aşağıdaki harici projelerin kodlarını içerir: 34 | 35 | * [OpenCV Library for Android](http://www.opencv.org) 36 | * [MarkdownView from Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView from Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader from Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Teşekkürler 42 | ----------- 43 | 44 | ### Katkı sağlayanlar 45 | 46 | Açık kaynaklı bir uygulama olarak, sizin katkılarınız her zaman beklenmektedir. 47 | 48 | Tercüme katkılarının çoğu şurada listelenmiştir [CONTRIBUTORS.md file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) kod katkısında bulunanları[the Changelog dosyasında](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) ve [the commits history](https://github.com/ctodobom/OpenNoteScanner/commits) sayfasında görebilirsiniz. 49 | 50 | [Issue Reports](https://github.com/ctodobom/OpenNoteScanner/issues) ile katkı sağlayan ve [Telegram Group](https://t.me/OpenNoteScanner) aracılığı ile görüş bildiren herkese teşekkürler. Onların da önemli katkıları olmuştur. 51 | 52 | ### External code 53 | 54 | Bu uygulama, topluluk tarafından üretilen aşağıdaki harika materyaller olmadan mümkün olmazdı. İnternetten aldığım ve kodda kullandığım temel parçaların yazarlarına özellikle teşekkür etmek istiyorum: 55 | 56 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [pyimagesearch.com sayfasından Adrian Rosebrock'a görüntü işleme ile ilgili verdiği harika bilgiler için](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/assets/about-zh.md: -------------------------------------------------------------------------------- 1 | 关于 Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | 此应用程序提供了一种快速扫描和存储手写笔记和图画,以及购物收据和其他文件的方法。它还支持自动捕捉图像上的 [预格式化页面](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | 许可证 10 | ------- 11 | 12 | 此应用程序采用 [GNU General Public License version 3 协议](http://www.gnu.org/licenses/gpl.txt). 源代码在 [GitHub](http://github.com/ctodobom/OpenNoteScanner)上可见。 13 | 14 | 捐赠 15 | --------- 16 | 17 | 制作Android应用程序不是我的主要工作,我出于好奇心做了这个应用程序,因为有几十个类似应用程序,但没有一个是开源的。 18 | 19 | 如果你认为这个应用或我所做的贡献值一杯咖啡钱,请随时通过PayPal,Bitcoin或DoeCooin作出任何捐赠。 20 | 21 | [Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **注意:** 只有安装了相关钱包APP才能打开以下链接! 24 | 25 | [通过Bitcoin捐赠](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [通过Dogecoin捐赠](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | 第三方代码 31 | ---------------------------------- 32 | 33 | 源代码中包含了以下项目的部分代码: 34 | 35 | * [OpenCV Library for Android](http://www.opencv.org) 36 | * [MarkdownView from Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView from Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader from Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | 感谢 42 | ------ 43 | 44 | ### 贡献者 45 | 46 | 作为一个开源应用程序,欢迎大家的贡献 47 | 48 | 大多数翻译贡献被列在 [CONTRIBUTORS.md file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) ,代码贡献者被列在 [the Changelog file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) 和 [the commits history](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | 其他提交问题及建议的 [Issue Reports](https://github.com/ctodobom/OpenNoteScanner/issues) 还有tg群中的讨论 [Telegram Group](https://t.me/OpenNoteScanner). 他们的帮助也是值得赞赏! 51 | 52 | ### 外部代码 53 | 54 | This application wouldn't be possible without the great material produced by the community. I would like to give special thanks to the authors of essencial parts I've got on the internet and used in the code: 55 | 没有社区提供的大量资料,就不可能实现此应用程序。 我要特别感谢我在互联网上获得并在代码中使用过其基本部分的作者: 56 | 57 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 58 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 59 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 60 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 61 | -------------------------------------------------------------------------------- /app/src/main/assets/about.md: -------------------------------------------------------------------------------- 1 | About Open Note Scanner 2 | ======================= 3 | 4 | **© 20XX [Claudemir Todo Bom](http://todobom.com)** 5 | 6 | This application provides a quick way to scan and store hand written notes and arts, and also shopping receipts and other documents. It also supports automatic capture of images on a [pre-formatted page](https://github.com/ctodobom/OpenNoteScanner/raw/master/Page%20Templates/A4%20with%202%20pages.pdf). 7 | 8 | 9 | License 10 | ------- 11 | 12 | This application is made available through the [GNU General Public License version 3](http://www.gnu.org/licenses/gpl.txt). Source code is [available on GitHub](http://github.com/ctodobom/OpenNoteScanner). 13 | 14 | Donations 15 | --------- 16 | 17 | Making Android applications is not my main job, I made this application out of curiosity and because there are dozens of apps with similar objectives but none of them is open source. 18 | 19 | If you think that this application or any of my contributions is worth some money and you are willing to pay for it, please feel free to make any donation through Paypal, Bitcoin or Dogecoin. 20 | 21 | [Donate through Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X6XHVCPMRQEL4) 22 | 23 | **ATTENTION:** Link to cryptocoins works only if you have the app for that coin installed! 24 | 25 | [Donate through Bitcoin](bitcoin:1H5tqKZoWdqkR54PGe9w67EzBnLXHBFmt9) 26 | 27 | [Donate through Dogecoin](dogecoin:DFBaP724XR3rfs9wFahBd353yFkgkqatvd) 28 | 29 | 30 | Third party parts and requirements 31 | ---------------------------------- 32 | 33 | Binary builds include code from these external projects: 34 | 35 | * [OpenCV Library for Android](http://www.opencv.org) 36 | * [MarkdownView from Feras Alnatsheh](https://github.com/falnatsheh/MarkdownView) 37 | * [TouchImageView from Mike Ortiz](https://github.com/MikeOrtiz/TouchImageView) 38 | * [Drag Select Recycler View](https://github.com/afollestad/drag-select-recyclerview) 39 | * [Android Universal Image Loader from Sergey Tarasevich](https://github.com/nostra13/Android-Universal-Image-Loader) 40 | 41 | Thanks 42 | ------ 43 | 44 | ### Contributors 45 | 46 | As an open source application, contribution are always welcome. 47 | 48 | Most translations contributions are listed on [CONTRIBUTORS.md file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CONTRIBUTORS.md) and code contributors are listed on [the Changelog file](https://github.com/ctodobom/OpenNoteScanner/blob/master/CHANGELOG.md) and [the commits history](https://github.com/ctodobom/OpenNoteScanner/commits). 49 | 50 | Other people helped submitting [Issue Reports](https://github.com/ctodobom/OpenNoteScanner/issues) and giving info through the [Telegram Group](https://t.me/OpenNoteScanner). Their help is appreciated as well. 51 | 52 | ### External code 53 | 54 | This application wouldn't be possible without the great material produced by the community. I would like to give special thanks to the authors of essencial parts I've got on the internet and used in the code: 55 | 56 | * [Android-er / GridView code sample](http://android-er.blogspot.com.br/2012/07/gridview-loading-photos-from-sd-card.html) 57 | * [Android Hive / Full Screen Image pager](http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/) 58 | * [Adrian Rosebrock from pyimagesearch.com for the excellent tutorial on how to handle the images](http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 59 | * [Gabriele Mariotti / On how to implement sections in the RecyclerView](https://gist.github.com/gabrielemariotti/e81e126227f8a4bb339c) 60 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allgood/OpenNoteScanner/15c1788267b88f261f5758365fbb606dcb1ea648/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/ClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner 2 | 3 | interface ClickListener { 4 | fun onClick(index: Int) 5 | fun onLongClick(index: Int) 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/FullScreenImageAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner 2 | 3 | import android.app.Activity 4 | import android.content.Context 5 | import android.view.LayoutInflater 6 | import android.view.View 7 | import android.view.ViewGroup 8 | import android.widget.RelativeLayout 9 | import androidx.viewpager.widget.PagerAdapter 10 | import com.nostra13.universalimageloader.core.ImageLoader 11 | import com.nostra13.universalimageloader.core.assist.ImageSize 12 | import com.ortiz.touchview.TouchImageView 13 | import java.util.* 14 | 15 | /* 16 | * based on code originally at http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/ 17 | */ 18 | class FullScreenImageAdapter( 19 | private val _activity: Activity, 20 | private val _imagePaths: ArrayList 21 | ) : PagerAdapter() { 22 | private var maxTexture = 0 23 | private var mImageLoader: ImageLoader? = null 24 | private var mTargetSize: ImageSize? = null 25 | override fun getCount(): Int { 26 | return _imagePaths.size 27 | } 28 | 29 | override fun isViewFromObject(view: View, `object`: Any): Boolean { 30 | return view === `object` 31 | } 32 | 33 | override fun instantiateItem(container: ViewGroup, position: Int): Any { 34 | val imgDisplay: TouchImageView 35 | val inflater = _activity 36 | .getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 37 | val viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container, 38 | false) 39 | imgDisplay = viewLayout.findViewById(R.id.imgDisplay) as TouchImageView 40 | val imagePath = _imagePaths[position] 41 | /* 42 | BitmapFactory.Options options = new BitmapFactory.Options(); 43 | options.inJustDecodeBounds = true; 44 | BitmapFactory.decodeFile(imagePath, options); 45 | 46 | int maxSize=Math.max(options.outHeight,options.outWidth); 47 | 48 | Log.d(TAG,"Texture: "+maxTexture + "Size: "+maxSize); 49 | 50 | if (maxTexture>0 && maxSize>maxTexture) { 51 | double scale=(double)maxSize/(double)maxTexture; 52 | 53 | options.inSampleSize = (int) Math.pow( 2, (Math.floor(Log(scale, 2))+1) ); 54 | 55 | Log.d(TAG, "inSampleSize: " + options.inSampleSize); 56 | } 57 | 58 | options.inJustDecodeBounds = false; 59 | 60 | options.inPreferredConfig = Bitmap.Config.ARGB_8888; 61 | Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options); 62 | */ 63 | 64 | // imgDisplay.setImageBitmap(bitmap); 65 | mImageLoader!!.displayImage("file:///$imagePath", imgDisplay, mTargetSize) 66 | container.addView(viewLayout) 67 | return viewLayout 68 | } 69 | 70 | fun getPath(position: Int): String { 71 | return _imagePaths[position] 72 | } 73 | 74 | override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { 75 | container.removeView(`object` as RelativeLayout) 76 | } 77 | 78 | fun setMaxTexture(maxTexture: Int, targetSize: ImageSize?) { 79 | this.maxTexture = maxTexture 80 | mTargetSize = targetSize 81 | } 82 | 83 | fun setImageLoader(imageLoader: ImageLoader?) { 84 | mImageLoader = imageLoader 85 | } 86 | 87 | companion object { 88 | private const val TAG = "FullScreenImageAdapter" 89 | private fun Log(n: Double, base: Double): Double { 90 | return Math.log(n) / Math.log(base) 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/OpenNoteScannerApplication.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner 2 | 3 | import android.content.SharedPreferences.OnSharedPreferenceChangeListener 4 | import android.preference.PreferenceManager 5 | import org.matomo.sdk.TrackerBuilder 6 | import org.matomo.sdk.extra.DownloadTracker.Extra.ApkChecksum 7 | import org.matomo.sdk.extra.MatomoApplication 8 | import org.matomo.sdk.extra.TrackHelper 9 | import java.util.* 10 | 11 | /** 12 | * Created by allgood on 23/04/16. 13 | */ 14 | class OpenNoteScannerApplication : MatomoApplication() { 15 | private var mOptOut = false 16 | private var mPreferenceChangeListener = OnSharedPreferenceChangeListener { sharedPreferences, key -> 17 | if (key == "usage_stats") { 18 | mOptOut = !sharedPreferences.getBoolean("usage_stats", false) 19 | tracker.isOptOut = mOptOut 20 | 21 | // when user opt-in, register the download 22 | if (!mOptOut) { 23 | trackDownload() 24 | } 25 | } 26 | } 27 | 28 | override fun onCreateTrackerConfig(): TrackerBuilder { 29 | return TrackerBuilder.createDefault("https://stats.todobom.com/matomo.php", 2) 30 | } 31 | 32 | override fun onCreate() { 33 | super.onCreate() 34 | initMatomo() 35 | } 36 | 37 | private fun initMatomo() { 38 | val mSharedPref = PreferenceManager.getDefaultSharedPreferences(this) 39 | 40 | // enable usage stats on google play 41 | if (BuildConfig.FLAVOR == "gplay" && mSharedPref.getBoolean("isFirstRun", true)) { 42 | mSharedPref.edit().putBoolean("usage_stats", true).apply() 43 | mSharedPref.edit().putBoolean("isFirstRun", false).apply() 44 | } 45 | 46 | // usage stats is optional and only when not debugging 47 | mOptOut = !mSharedPref.getBoolean("usage_stats", false) 48 | tracker.isOptOut = mOptOut 49 | mSharedPref.registerOnSharedPreferenceChangeListener(mPreferenceChangeListener) 50 | 51 | // When working on an app we don't want to skew tracking results. 52 | tracker.dryRunTarget = if (BuildConfig.DEBUG) Collections.synchronizedList(ArrayList()) else null 53 | 54 | // If you want to set a specific userID other than the random UUID token, do it NOW to ensure all future actions use that token. 55 | // Changing it later will track new events as belonging to a different user. 56 | // String userEmail = ....preferences....getString 57 | // getTracker().setUserId(userEmail); 58 | if (!mOptOut) { 59 | trackDownload() 60 | } 61 | } 62 | 63 | private fun trackDownload() { 64 | // Track this app install, this will only trigger once per app version. 65 | TrackHelper.track().download().identifier(ApkChecksum(this)).with(tracker) 66 | } 67 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/SettingsActivity.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner 2 | 3 | import android.os.Bundle 4 | import android.preference.ListPreference 5 | import android.preference.Preference 6 | import android.preference.Preference.OnPreferenceClickListener 7 | import android.preference.PreferenceCategory 8 | import androidx.appcompat.app.AppCompatActivity 9 | import com.todobom.opennotescanner.helpers.AboutFragment 10 | import com.todobom.opennotescanner.helpers.Utils.Companion.isPackageInstalled 11 | 12 | class SettingsActivity : AppCompatActivity() { 13 | private lateinit var sf: SettingsFragment 14 | override fun onCreate(savedInstanceState: Bundle?) { 15 | super.onCreate(savedInstanceState) 16 | setContentView(R.layout.activity_settings) 17 | val fm = fragmentManager 18 | val ft = fm.beginTransaction() 19 | sf = SettingsFragment() 20 | ft.replace(android.R.id.content, sf) 21 | ft.commit() 22 | } 23 | 24 | override fun onResume() { 25 | super.onResume() 26 | val aboutPreference = sf.findPreference("about_preference") 27 | aboutPreference.onPreferenceClickListener = OnPreferenceClickListener { preference: Preference? -> 28 | val fm = supportFragmentManager 29 | val aboutDialog = AboutFragment() 30 | aboutDialog.show(fm, "about_view") 31 | true 32 | } 33 | val donateCategory = sf.findPreference("donate_pref_category") as PreferenceCategory 34 | val bitcoinPref = sf.findPreference("donate_bitcoin") 35 | if (bitcoinPref != null && !isPackageInstalled(this, "de.schildbach.wallet")) { 36 | donateCategory.removePreference(bitcoinPref) 37 | } 38 | 39 | val pageFormatPreference: ListPreference = sf.findPreference("document_page_format") as ListPreference 40 | val customPageWidth = sf.findPreference("custom_pageformat_width") 41 | val customPageHeight = sf.findPreference("custom_pageformat_height") 42 | 43 | pageFormatPreference.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { preference, newValue -> 44 | customPageWidth.setEnabled(newValue.equals("0.0001")) 45 | customPageHeight.setEnabled(newValue.equals("0.0001")) 46 | true 47 | } 48 | customPageWidth.setEnabled(pageFormatPreference.value.equals("0.0001")) 49 | customPageHeight.setEnabled(pageFormatPreference.value.equals("0.0001")) 50 | } 51 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/SettingsFragment.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner 2 | 3 | import android.content.SharedPreferences 4 | import android.content.SharedPreferences.OnSharedPreferenceChangeListener 5 | import android.os.Bundle 6 | import android.preference.* 7 | 8 | /** 9 | * Created by allgood on 21/04/16. 10 | */ 11 | class SettingsFragment : PreferenceFragment(), OnSharedPreferenceChangeListener { 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | addPreferencesFromResource(R.xml.settings) 15 | preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) 16 | } 17 | 18 | override fun onResume() { 19 | super.onResume() 20 | updatePreferenceScreen(preferenceScreen) 21 | } 22 | 23 | private fun updatePreferenceScreen(screen: PreferenceScreen) { 24 | for (i in 0 until screen.preferenceCount) { 25 | val preference = screen.getPreference(i) 26 | if (preference is PreferenceGroup) { 27 | for (j in 0 until preference.preferenceCount) { 28 | val singlePref = preference.getPreference(j) 29 | updatePreference(singlePref, singlePref.key) 30 | } 31 | } else { 32 | updatePreference(preference, preference.key) 33 | } 34 | } 35 | } 36 | 37 | override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) { 38 | updatePreference(findPreference(key), key) 39 | } 40 | 41 | private fun updatePreference(preference: Preference?, key: String?) { 42 | if (preference == null) return 43 | if (preference is ListPreference) { 44 | val listPreference = preference 45 | listPreference.summary = listPreference.entry 46 | return 47 | } 48 | if (preference is EditTextPreference) { 49 | val sharedPrefs = preferenceManager.sharedPreferences 50 | preference.setSummary(sharedPrefs.getString(key, "Default")) 51 | } 52 | if (preference is PreferenceScreen) { 53 | updatePreferenceScreen(preference) 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/AboutFragment.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import android.content.Intent 4 | import android.graphics.Point 5 | import android.os.Bundle 6 | import android.view.* 7 | import androidx.fragment.app.DialogFragment 8 | import com.todobom.opennotescanner.OpenNoteScannerApplication 9 | import com.todobom.opennotescanner.R 10 | import org.matomo.sdk.extra.TrackHelper 11 | import us.feras.mdv.MarkdownView 12 | 13 | class AboutFragment : DialogFragment() { 14 | override fun onCreateView( 15 | inflater: LayoutInflater, 16 | container: ViewGroup?, 17 | savedInstanceState: Bundle? 18 | ): View? { 19 | val aboutView = inflater.inflate(R.layout.about_view, container) 20 | dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE) 21 | return aboutView 22 | } 23 | 24 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 25 | super.onViewCreated(view, savedInstanceState) 26 | //These two in case the fragment detached 27 | val activity = activity ?: return 28 | val window = dialog?.window ?: return 29 | 30 | val markdownView = view.findViewById(R.id.about_markdown) 31 | markdownView.loadMarkdownFile("file:///android_asset/" + getString(R.string.about_filename)) 32 | val size = Point() 33 | activity.windowManager.defaultDisplay.getRealSize(size) 34 | window.setLayout((size.x * 0.9).toInt(), (size.y * 0.9).toInt()) 35 | window.setGravity(Gravity.CENTER) 36 | val about_shareapp = view.findViewById(R.id.about_shareapp) 37 | about_shareapp.setOnClickListener { 38 | val shareBody = getString(R.string.share_app_body) + APP_LINK 39 | val sharingIntent = Intent(Intent.ACTION_SEND).apply { 40 | type = "text/plain" 41 | putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_app_subject)) 42 | putExtra(Intent.EXTRA_TEXT, shareBody) 43 | } 44 | val tracker = (activity.application as OpenNoteScannerApplication).tracker 45 | TrackHelper.track().screen("/shareapp").title("Share Application").with(tracker) 46 | startActivity(Intent.createChooser(sharingIntent, getString(R.string.share_app_using))) 47 | } 48 | } 49 | 50 | companion object { 51 | private const val APP_LINK = "https://goo.gl/2JwEPq" 52 | } 53 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/AnimationRunnable.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import android.graphics.Bitmap 4 | import android.util.Log 5 | import android.view.View 6 | import android.view.animation.* 7 | import android.widget.ImageView 8 | import android.widget.RelativeLayout 9 | import com.todobom.opennotescanner.OpenNoteScannerActivity 10 | import com.todobom.opennotescanner.R 11 | import org.opencv.core.Point 12 | import org.opencv.core.Size 13 | 14 | class AnimationRunnable(private val activity: OpenNoteScannerActivity, filename: String, document: ScannedDocument) : Runnable { 15 | private val imageSize: Size = document.processed!!.size() 16 | private val previewPoints: Array? = if(document.quadrilateral != null) document.previewPoints else null 17 | private val previewSize: Size? = if(document.quadrilateral != null) document.previewSize else null 18 | private val fileName: String = filename 19 | private var bitmap: Bitmap? = null 20 | 21 | override fun run() { 22 | val imageView = activity.findViewById(R.id.scannedAnimation) as ImageView 23 | val display = activity.windowManager.defaultDisplay 24 | val size = android.graphics.Point() 25 | display.getRealSize(size) 26 | val width = Math.min(size.x, size.y) 27 | val height = Math.max(size.x, size.y) 28 | 29 | // ATENTION: captured images are always in landscape, values should be swapped 30 | val imageWidth = imageSize.height 31 | val imageHeight = imageSize.width 32 | val params = imageView.layoutParams as RelativeLayout.LayoutParams 33 | val prevPoints = previewPoints 34 | val prevSize = previewSize 35 | 36 | if (prevPoints != null) { 37 | prevSize!! 38 | 39 | val documentLeftHeight = hipotenuse(prevPoints[0], prevPoints[1]) 40 | val documentBottomWidth = hipotenuse(prevPoints[1], prevPoints[2]) 41 | val documentRightHeight = hipotenuse(prevPoints[2], prevPoints[3]) 42 | val documentTopWidth = hipotenuse(prevPoints[3], prevPoints[0]) 43 | val documentWidth = Math.max(documentTopWidth, documentBottomWidth) 44 | val documentHeight = Math.max(documentLeftHeight, documentRightHeight) 45 | Log.d(TAG, "device: " + width + "x" + height + " image: " + imageWidth + "x" + imageHeight + " document: " + documentWidth + "x" + documentHeight) 46 | Log.d(TAG, "prevPoints[0] x=" + prevPoints[0].x + " y=" + prevPoints[0].y) 47 | Log.d(TAG, "prevPoints[1] x=" + prevPoints[1].x + " y=" + prevPoints[1].y) 48 | Log.d(TAG, "prevPoints[2] x=" + prevPoints[2].x + " y=" + prevPoints[2].y) 49 | Log.d(TAG, "prevPoints[3] x=" + prevPoints[3].x + " y=" + prevPoints[3].y) 50 | 51 | // ATENTION: again, swap width and height 52 | val xRatio = width / prevSize.height 53 | val yRatio = height / prevSize.width 54 | params.topMargin = (prevPoints[3].x * yRatio).toInt() 55 | params.leftMargin = ((prevSize.height - prevPoints[3].y) * xRatio).toInt() 56 | params.width = (documentWidth * xRatio).toInt() 57 | params.height = (documentHeight * yRatio).toInt() 58 | } else { 59 | params.topMargin = height / 4 60 | params.leftMargin = width / 4 61 | params.width = width / 2 62 | params.height = height / 2 63 | } 64 | 65 | bitmap = Utils.decodeSampledBitmapFromUri(fileName, params.width, params.height) 66 | imageView.setImageBitmap(bitmap) 67 | imageView.visibility = View.VISIBLE 68 | val translateAnimation = TranslateAnimation( 69 | Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, (-params.leftMargin).toFloat(), 70 | Animation.ABSOLUTE, 0f, Animation.ABSOLUTE, (height - params.topMargin).toFloat() 71 | ) 72 | val scaleAnimation = ScaleAnimation(1f, 0f, 1f, 0f) 73 | val animationSet = AnimationSet(true) 74 | animationSet.addAnimation(scaleAnimation) 75 | animationSet.addAnimation(translateAnimation) 76 | animationSet.duration = 600 77 | animationSet.interpolator = AccelerateInterpolator() 78 | animationSet.setAnimationListener(object : Animation.AnimationListener { 79 | override fun onAnimationStart(animation: Animation) {} 80 | override fun onAnimationEnd(animation: Animation) { 81 | imageView.visibility = View.INVISIBLE 82 | imageView.setImageBitmap(null) 83 | bitmap?.recycle() 84 | } 85 | 86 | override fun onAnimationRepeat(animation: Animation) {} 87 | }) 88 | imageView.startAnimation(animationSet) 89 | } 90 | 91 | companion object { 92 | private const val TAG = "AnimationRunnable" 93 | 94 | @JvmStatic 95 | fun hipotenuse(a: Point, b: Point): Double { 96 | return Math.sqrt(Math.pow(a.x - b.x, 2.0) + Math.pow(a.y - b.y, 2.0)) 97 | } 98 | } 99 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/AppConstant.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | object AppConstant { 4 | // supported file formats 5 | @JvmField 6 | val FILE_EXTN = listOf("jpg", "jpeg", "png") 7 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/OpenNoteMessage.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | data class OpenNoteMessage(val command: String, val obj: Any?) -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/PdfHelper.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import android.content.Context 4 | import android.os.Environment 5 | import android.preference.PreferenceManager 6 | import android.widget.Toast 7 | import com.itextpdf.io.image.ImageData 8 | import com.itextpdf.io.image.ImageDataFactory 9 | import com.itextpdf.kernel.geom.PageSize 10 | import com.itextpdf.kernel.pdf.PdfDocument 11 | import com.itextpdf.kernel.pdf.PdfWriter 12 | import com.itextpdf.layout.Document 13 | import com.itextpdf.layout.element.Image 14 | import com.todobom.opennotescanner.R 15 | import java.io.File 16 | import java.io.FileNotFoundException 17 | import java.net.MalformedURLException 18 | import java.text.SimpleDateFormat 19 | import java.util.* 20 | 21 | object PdfHelper { 22 | @JvmStatic 23 | fun mergeImagesToPdf(applicationContext: Context, files: ArrayList): String? { 24 | //TODO move this to background thread 25 | if (files.isEmpty()) { 26 | Toast 27 | .makeText(applicationContext, applicationContext.getString(R.string.no_files_selected), Toast.LENGTH_SHORT) 28 | .show() 29 | return null 30 | } 31 | val outputFile = ("PDF-" 32 | + SimpleDateFormat("yyyyMMdd-HHmmss").format(Date()) + ".pdf") 33 | val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext) 34 | val pdfFilePath = File( 35 | Environment.getExternalStorageDirectory() 36 | .toString() + File.separator + sharedPreferences.getString("storage_folder", "OpenNoteScanner"), outputFile) 37 | .absolutePath 38 | var pdfWriter: PdfWriter? = null 39 | try { 40 | pdfWriter = PdfWriter(pdfFilePath) 41 | } catch (e: FileNotFoundException) { 42 | e.printStackTrace() 43 | } 44 | if (pdfWriter == null) { 45 | return null 46 | } 47 | val pdfDocument = PdfDocument(pdfWriter) 48 | val document = Document(pdfDocument) 49 | files.sort() 50 | for (file in files) { 51 | var imageData: ImageData? = null 52 | try { 53 | imageData = ImageDataFactory.create(file) 54 | } catch (e: MalformedURLException) { 55 | e.printStackTrace() 56 | } 57 | if (imageData == null) { 58 | return null 59 | } 60 | val image = Image(imageData) 61 | pdfDocument.addNewPage(PageSize(image.imageWidth, image.imageHeight)) 62 | document.add(image) 63 | } 64 | document.close() 65 | return pdfFilePath 66 | } 67 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/PreviewFrame.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import org.opencv.core.Mat 4 | 5 | data class PreviewFrame(val frame: Mat, val isAutoMode: Boolean, val isPreviewOnly: Boolean) -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/Quadrilateral.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import org.opencv.core.MatOfPoint 4 | import org.opencv.core.Point 5 | 6 | class Quadrilateral(val contour: MatOfPoint, val points: Array) -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/ScanTopicDialogFragment.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import android.app.Activity 4 | import android.app.Dialog 5 | import android.content.DialogInterface 6 | import android.os.Bundle 7 | import android.view.View 8 | import android.widget.EditText 9 | import androidx.appcompat.app.AlertDialog 10 | import androidx.fragment.app.DialogFragment 11 | import com.todobom.opennotescanner.R 12 | 13 | class ScanTopicDialogFragment : DialogFragment() { 14 | interface SetTopicDialogListener { 15 | fun onFinishTopicDialog(inputText: String?) 16 | } 17 | 18 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 19 | val activity = activity!! 20 | val listener = activity as SetTopicDialogListener 21 | 22 | val alertDialogBuilder = AlertDialog.Builder(activity) 23 | alertDialogBuilder.setTitle(R.string.set_scan_topic) 24 | val inflater = activity.layoutInflater 25 | val view = inflater.inflate(R.layout.dialog_scan_topic, null) 26 | alertDialogBuilder.setView(view) 27 | val scanTopic = view.findViewById(R.id.editTextScanTopic) 28 | alertDialogBuilder.setPositiveButton(R.string.set_scan_topic) { _: DialogInterface?, _: Int -> 29 | listener.onFinishTopicDialog(scanTopic.text.toString()) 30 | dismiss() 31 | activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN 32 | } 33 | alertDialogBuilder.setNegativeButton(R.string.skip_scan_topic) { dialog: DialogInterface?, _: Int -> 34 | if (dialog != null) { 35 | listener.onFinishTopicDialog(null) 36 | dialog.dismiss() 37 | activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN 38 | } 39 | } 40 | return alertDialogBuilder.create() 41 | } 42 | 43 | init { 44 | isCancelable = false 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/helpers/ScannedDocument.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.helpers 2 | 3 | import org.opencv.core.Mat 4 | import org.opencv.core.Point 5 | import org.opencv.core.Size 6 | 7 | class ScannedDocument(val original: Mat) { 8 | var processed: Mat? = null 9 | var quadrilateral: Quadrilateral? = null 10 | var previewPoints: Array? = null 11 | var previewSize: Size? = null 12 | 13 | fun release() { 14 | processed?.release() 15 | original.release() 16 | quadrilateral?.contour?.release() 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/views/HUDCanvasView.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.views 2 | 3 | import android.content.Context 4 | import android.graphics.Canvas 5 | import android.graphics.Paint 6 | import android.graphics.drawable.shapes.Shape 7 | import android.util.AttributeSet 8 | import android.view.View 9 | 10 | /** 11 | * Draw an array of shapes on a canvas 12 | * 13 | * @author http://todobom.com 14 | */ 15 | class HUDCanvasView : View { 16 | private var detectedShape: HUDShape? = null 17 | private var documentBoxShape: HUDShape? = null 18 | private val shapes = ArrayList() 19 | 20 | constructor(context: Context?) : super(context) {} 21 | constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {} 22 | constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {} 23 | 24 | inner class HUDShape(val shape: Shape, private val mPaint: Paint, private val mBorder: Paint?) { 25 | fun draw(canvas: Canvas?) { 26 | shape.draw(canvas, mPaint) 27 | if (mBorder != null) { 28 | shape.draw(canvas, mBorder) 29 | } 30 | } 31 | 32 | init { 33 | mBorder!!.style = Paint.Style.STROKE 34 | } 35 | } 36 | 37 | override fun onDraw(canvas: Canvas) { 38 | super.onDraw(canvas) 39 | 40 | // TODO: consider storing these as member variables to reduce 41 | // allocations per draw cycle. 42 | val paddingLeft = paddingLeft 43 | val paddingTop = paddingTop 44 | val paddingRight = paddingRight 45 | val paddingBottom = paddingBottom 46 | val contentWidth = width - paddingLeft - paddingRight 47 | val contentHeight = height - paddingTop - paddingBottom 48 | if (documentBoxShape != null) { 49 | documentBoxShape!!.shape.resize(contentWidth.toFloat(), contentHeight.toFloat()) 50 | documentBoxShape!!.draw(canvas) 51 | } 52 | if (detectedShape != null) { 53 | detectedShape!!.shape.resize(contentWidth.toFloat(), contentHeight.toFloat()) 54 | detectedShape!!.draw(canvas) 55 | } 56 | } 57 | 58 | fun setDetectedShape(shape: Shape, paint: Paint, border: Paint?) { 59 | detectedShape = HUDShape(shape, paint, border) 60 | } 61 | 62 | fun setDocumentBoxShape(shape: Shape?, paint: Paint?, border: Paint?) { 63 | if (shape == null) { 64 | documentBoxShape = null; 65 | return; 66 | } 67 | documentBoxShape = HUDShape(shape, paint!!, border) 68 | } 69 | 70 | fun clear() { 71 | detectedShape = null 72 | } 73 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/views/SquareFrameLayout.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.views 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.widget.FrameLayout 6 | import kotlin.math.max 7 | 8 | /** 9 | * Based on RectangleView from 10 | * @author Aidan Follestad (afollestad) 11 | */ 12 | class SquareFrameLayout : FrameLayout { 13 | constructor(context: Context) : super(context) 14 | constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) 15 | constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) 16 | 17 | override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { 18 | val squareSpec = max(widthMeasureSpec, heightMeasureSpec) 19 | super.onMeasure(squareSpec, squareSpec) 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/todobom/opennotescanner/views/TagEditorFragment.kt: -------------------------------------------------------------------------------- 1 | package com.todobom.opennotescanner.views 2 | 3 | import android.content.res.ColorStateList 4 | import android.os.Bundle 5 | import android.view.LayoutInflater 6 | import android.view.View 7 | import android.view.ViewGroup 8 | import android.view.Window 9 | import android.widget.Button 10 | import android.widget.ImageView 11 | import androidx.exifinterface.media.ExifInterface 12 | import androidx.fragment.app.DialogFragment 13 | import com.todobom.opennotescanner.R 14 | import java.io.IOException 15 | 16 | /** 17 | * Created by allgood on 29/05/16. 18 | */ 19 | class TagEditorFragment : DialogFragment() { 20 | private var mRunOnDetach: Runnable? = null 21 | private var filePath: String? = null 22 | var stdTagsState = BooleanArray(7) 23 | var stdTags = arrayOf("rocket", "gift", "tv", "bell", "game", "star", "magnet") 24 | var stdTagsButtons = arrayOfNulls(7) 25 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, 26 | savedInstanceState: Bundle?): View? { 27 | val tagEditorView = inflater.inflate(R.layout.tageditor_view, container) 28 | dialog!!.window!!.requestFeature(Window.FEATURE_NO_TITLE) 29 | stdTagsButtons[0] = tagEditorView.findViewById(R.id.buttonRocket) 30 | stdTagsButtons[1] = tagEditorView.findViewById(R.id.buttonGift) 31 | stdTagsButtons[2] = tagEditorView.findViewById(R.id.buttonTv) 32 | stdTagsButtons[3] = tagEditorView.findViewById(R.id.buttonBell) 33 | stdTagsButtons[4] = tagEditorView.findViewById(R.id.buttonGame) 34 | stdTagsButtons[5] = tagEditorView.findViewById(R.id.buttonStar) 35 | stdTagsButtons[6] = tagEditorView.findViewById(R.id.buttonMagnet) 36 | for (i in 0..6) { 37 | stdTagsButtons[i]!!.setBackgroundTintList(ColorStateList.valueOf(if (stdTagsState[i]) -0xff198a else -0x5f5f60)) 38 | stdTagsButtons[i]!!.setOnClickListener(View.OnClickListener { v: View -> 39 | val index = getTagIndex(v) 40 | stdTagsState[index] = !stdTagsState[index] 41 | v.backgroundTintList = ColorStateList.valueOf(if (stdTagsState[index]) -0xff198a else -0x5f5f60) 42 | }) 43 | } 44 | val tagDoneButton = tagEditorView.findViewById