Giter Club home page Giter Club logo

passandroid's People

Stargazers

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

Watchers

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

passandroid's Issues

QR code broken in detailed view (Android 4.2.1)

The QR code is broken in the detailed view on Android 4.2.1. Only a part of the code is shown since the new zoom feature has been added. Full screen mode is working. On Android 5.1.1, it works. We can send a screenshot, if needed.

Go to pass if pass with same ID exists

currently when trying to import a pass and the id exists an error message is given and we quit - UX wise it would be better if we open the corresponding pass instead of quitting

Specify pkpass location

It'd be neat if I could specify where to look for pkpass files - right now searching for passes takes a long time.

iBeacon support

Most passcards and iBeacons are used together a lot, would be great to have support for iBeacons

Lockscreen widget

Add a LockScreen widget. Need to decide first if there is only one pass in there all the time ( perhaps a Switch on the pass ) - or some way to switch between certain passes in the lockscreen. Also what should be displayed there ( only BarCode and title or anything more)

Bar code too small

On my Galaxy S4 (1080*1920 AFAIK), the rendered bar codes are tiny and won't scan.

1D Barcode in edit

after #43 passandroid supports displaying 1D barcodes in passes - but we also need them in editing.
I am just unsure UX wise - 3 is max in the width IMHO for barcodes - I liked the feature of previewing all barcodes - but have the feeling that 4 is too much for this

screenshot_20160107-162306

improve pass-caching

at the moment passandroid serializes the pass-POJOs to binary files - the main issue is that parsing Apples passbook format can take time ( e.g. to work around all the vendor-specific quirks )
Sometimes we want to load a lot of passbooks at once - e.g. to sort them
But the binary dump makes things complicated ( e.g. for #50 ) - removing the binary caching first and load intermediary json

Add passbook from QR

Firstly, thanks for your work.

Please, could you add support to add passbook from QR, maybe via Barcode Scanner.

Thanks again.

Dark theme

A dark theme would be nice, especially when you are on a plane at night. So you don't have to look at a too bright screen.

Backup and restore passes

Feature request: backup and restore your passes using the storage access framework, or Google Drive / Dropbox directly.

Stops immediately after the start

Hi,
I have used this app last about a year ago. Now I installed the current version 2.7.0 from F-droid and launched the app to look for enhancements. But the app only opens a white window and then stops.
I have a Samsung Note 10' Tablet with the old Android 4.1.2
Newly tested: previous version 2.6.4 works correctly.
Regards

Menu: Change Entry Name

I am using PassAndroid version 2.5.5 via F-Droid since a few days and I ❤️ it (thank you!).

One nice thing would be, if imported boarding passes could be manually renamed in the menu's listing.

In my case, after clicking and importing the URL in the Turkish Airlines SMS, I got the following two menu entries, which I would like to have renamed myself to something more explicit :)

passandroid_screenshotmenu

Rotate not working when viewing Pass

When on the detail view of the pass, it is not possible to rotate. I'm not sure, maybe this is meant to be a feature, and I totally understand that no rotation is allowed when having the barcode fullscreen, but on the details page it would make sense.

Other funny thing is, that if you rotate on the overview (which works), and then go to the details-view you stay rotated, but can't rotate back :)

.pkpass file association

If I try to open a .pkpass attached to an email directly from the Gmail client, I receive a message saying 'You don't have an app that can open this file (.pkpass)...' Would be great if you could register PassAndroid as .pkpass file handler in one of the next versions. Many thanks!

How to fix build path issue

I've imported all jars listed in your code but still having build path issues. Would be nice if you could give a brief step by step install and run in README.

remember pass locations

searching passes take a long time - I recently attacked this problem from one side ( doing downloads first ) - but there is more room for improvement. When PassAndroid finds a file it should remember the path and search there next time first.

Creating passfile FC

In the screen to create a passbook file when you scroll over to color/bar code, the app crashes . Useful infos:

file: /data/data/org.ligi.passandroid/files/2.5.3-1429054498204.tracedroid
Android Version: 5.0.2
Phone Model: Moto G 2014
TraceDroid Version: 1.1
TraceDroid extra:
Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.ligi.passandroid.model.BarCode.getMessage()' on a null object reference
at org.ligi.passandroid.ui.edit_fragments.BarcodeEditFragment.onCreateView(BarcodeEditFragment.java:111)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:953)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:488)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:555)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:495)
at com.viewpagerindicator.TitlePageIndicator.onTouchEvent(TitlePageIndicator.java:614)
at android.view.View.dispatchTouchEvent(View.java:8388)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2569)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1743)
at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2530)
at android.view.View.dispatchPointerEvent(View.java:8578)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4028)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3894)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3585)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5708)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5682)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5653)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5798)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:122)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Log:
0 D: Writing unhandled exception to: /data/data/org.ligi.passandroid/files/2.5.3-1429054498204.tracedroid
1 D: Searching Exceptions in: /data/data/org.ligi.passandroid/files
2 I: PassParse Exception org.json.JSONException: No value for description
3 I: Passbook cache miss
4 D: current handler class=com.android.internal.os.RuntimeInit$UncaughtHandler
file: /data/data/org.ligi.passandroid/files/2.5.3-1429054646177.tracedroid
Android Version: 5.0.2
Phone Model: Moto G 2014
TraceDroid Version: 1.1
TraceDroid extra:
Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.ligi.passandroid.model.BarCode.getMessage()' on a null object reference
at org.ligi.passandroid.ui.edit_fragments.BarcodeEditFragment.onCreateView(BarcodeEditFragment.java:111)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:953)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:488)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:549)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Log:
0 D: Writing unhandled exception to: /data/data/org.ligi.passandroid/files/2.5.3-1429054646177.tracedroid
1 I: PassParse Exception org.json.JSONException: No value for description
2 I: Passbook cache miss
3 D: current handler class=com.android.internal.os.RuntimeInit$UncaughtHandler

Not working with Virgin Australia if open the link

From the Virgin Australia check in link (Email / SMS), if you choose open in PassAndroid, it will not add the pass into PassAndroid.
You have to save it (from example, open in Chrome in desktop, simulate as IPhone 6, add to passbook to get the pkpass file (to Google Drive)) and than can add into the app.

The pass was able to add into the app directly last year by opening the check in link

Linear barcodes

Please add support for linear barcodes. There are royalty cards that use them.

choose between AsyncTask and IntentService/AsyncTaskLoader

Hello, I'm doing research on Android async programming. I see in PassAndroid, you use IntentService at some places (SearchPassesIntentService) while use AsyncTask at other places (such as in ExtractURLAsIphoneActivity). I'm wondering how do you choose between AsyncTask and IntentService? because both are used to execute background tasks.

As far as I know, some articles (for example this article) mention that AsyncTask leads to memory leak and losing task result when there's a configuration change (such as orientation change). But using IntentService or AsyncTaskLoader can avoid such problems.

Feature: Display notification x minutes before pass time

i think Apple's Passbook does this and i think is't very handy...
Some minutes before the time of the Pass/Ticket/... is happening the app could display a notification with a quick link to the Pass. So you don't have to search for the App itself and the right Pass in the App (if you have a lot).

Boarding Pass via AZTEC: PDF417 Alternative

I had an interesting situation in the last days with turkish airlines.

They send out AZTEC based electronic tickets (which are imported fine and work great!) but not all the gates on airports they use can read AZTEC.

So what I thought is: since the AZTEC is already imported (and the data within it known) - could one also add a PDF417 version of it as an alternative, e.g., while sliding to the right in code-full-screen mode?

This would basically imitate a full (printed) boarding pass (that only has PDF417 on it) and is well supported even by scanners at older gates.

Since I got still additionally my boarding passes printed during drop off, I can also give examples of printed boarding passes and electronic versions I got (via private mail).

remove multiple copies of passes

scenario:
the user has several copies of the same pass
the user tries to delete the pass with source
next scan -> the pass is still popping up - even though it was deleted

Import tickets by scanning barcode

This is a request for enhancement.

Rather than only be able to import passbook files, why not also just scan the barcode of any ticket? For example the Droidcon ticket, there is no passbook for that.

Of course it would be important that the barcodes are displayed in the same format as they were recorded.

Archive old/used passbook files

I would like to save old or used passbook files, for example to know in which date I traveled, I think that is useful (other apps like this one has it).

Display brightness

Hi,
thanks for your great app! I used it on my last flight and found it to be very useful. I only had one issue: When displaying the QR code in full size the display brightness was to low to scan the code. It would be great if the display was turned to maximum brightness when the QR code is displayed.

Cheers,
deboerk

Add alert when adding expiry date to calendar

Got a mail from a user that the time for the calendar is wrong - when looking into the problem I noticed the time is correct - but it is the expiry-date which was not useful for the user. Unfortunately it is the only parseable date in the pass. Removing this date ( or removing the option to add it to calendar ) has some UX issues - so I tend to just add a warning in form of an alert after clicking "add to calendar"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.