Giter VIP home page Giter VIP logo

campus-android's Introduction

Build Status Discord Channel

TUM Campus App for Android

🚨 Public Service Announcement 🚨

Currently, we are at a transitioning point for our TUM Campus Apps. We have three platform-specific versions: iOS, Android, and UWP.
However, maintaining these distinct versions has proven challenging, with notable issues including feature disparity and the need for individual bug fixes for each platform. Furthermore, this model is dependent on having a dedicated maintainer for each app.

As such, we have decided to consolidate our resources and efforts towards the creation of a unified, cross-platform app using Flutter. You can access the new codebase here: github.com/TUM-Dev/Campus-Flutter.

By uniting our efforts under one platform, we aim to enhance our efficiency and streamline the feature sets across all versions, thereby offering a more cohesive and reliable user experience.

We invite and value your contributions to the ongoing development of the Campus-Android. However, please note that we are transitioning towards a new Flutter-based codebase, expected to take over the platform-specific apps in 2024. We thank you for your understanding and look forward to your continued support during this exciting period of transition. If you have any comments/feedback about this decison, you can reach us at app tum.de or by adding a GitHub issue

An Excellent App for Students by Students

The TUM Campus App (TCA) is an open source project, which is mainly developed by volunteers with significant contributions by the Android Practical course. The TCA mostly targets phones, but can also be used on tablets or any Android device.

Features:

  • Lecture calendar (with in-app view and a syncing service to the device's calendar)
  • Meal plans of various cafeterias (Studentenwerk München)
  • View all your grades
  • Find empty study rooms
  • MVV departure times
  • TUM and related News (mostly in German)
  • Roomfinder
  • Automatic muting while lectures are held
  • Available in English and German

Special thanks to everybody that has contributed to this project. If you also want to contribute to the TCA, don't hesitate to ask us about anything, open an issue or just correct our spelling mistakes. We've also collected a bunch of guidelines in the Wiki.
Just don't forget: Be excellent to each other ❤️

Used Permissions:

  • Location services: So we can show you the nearest Cafeteria / MVV departures
  • Access calendar: To sync your lecture calendar with your local calendar
  • Access contacts: So you can add people from the person search to your addressbook
  • Detailed WiFi information: So we can help you set up eduroam access
  • Camera: So you can join chat rooms by scanning a QR code

Disclaimer:

This is not an official app of the Technische Universität München. There's no support or warranty (you can however send us an email [email protected] or open an issue here on GitHub). The app is developed by students and for students, so use it at your own risk. We try to keep your data safe with only using TUMonline tokens and not saving your password. For further information, please take a look at our privacy policy and the terms and conditions of the lecture chat.

Policies:

Privacy policy

Support:

You can reach us on GitHub or via E-Mail [email protected].

License:

GNU GPL v3

campus-android's People

Contributors

anselm92 avatar arash-a2k avatar aserhany avatar brdvlps avatar carlinho89 avatar commanderstorm avatar dependabot[bot] avatar dergenaue avatar dreierf avatar enricogigantiello avatar harisiltifat avatar jacqueline8711 avatar jfoerste avatar joschahenningsen avatar kordianbruck avatar liqs-v2 avatar lnsp avatar marius1501 avatar mhmadayad avatar nilstk avatar pfent avatar psukys avatar renovate[bot] avatar sikreuz avatar t2m4k1 avatar thellmund avatar thomasmauerer avatar tkrex avatar tobiasjungmann avatar yakuky avatar

Stargazers

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

Watchers

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

campus-android's Issues

Force close application occurs on each startup.

Galaxy Y (GT-S5360)
Very bad
Galaxy Ace Duos (GT-S6802)
Force close application occurs on each startup.

java.lang.NoSuchMethodError: de.tum.in.tumcampus.activities.StartActivity.getActionBar
at de.tum.in.tumcampus.activities.StartActivity.onCreate(StartActivity.java:147)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
at dalvik.system.NativeStart.main(Native Method)

Close app on double back tap

Please close the app if you double click on the return button at the start page.

That would be useful.
Thanks

Mensa: missing data

On a fresh install of the app the mensa data is missing. Need to check the update routine

java.lang.NullPointerException

java.lang.NullPointerException
at de.tum.in.tumcampus.fragments.CalendarSectionFragment$2.onClick(CalendarSectionFragment.java:182)
at android.view.View.performClick(View.java:3528)
at android.view.View$PerformClick.run(View.java:14235)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)

Include mensa credits

Talk to Studentenwerk for them to publish the credit on the students card via a webserver

java.lang.OutOfMemoryError: (Heap Size=13767KB, Allocated=9829KB, Bitmap Size=20298KB)

java.lang.OutOfMemoryError: (Heap Size=13767KB, Allocated=9829KB, Bitmap Size=20298KB)
at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79)
at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:98)
at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:173)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at de.tum.in.tumcampusapp.auxiliary.Utils.downloadFile(Utils.java:219)
at de.tum.in.tumcampusapp.auxiliary.Utils.access$0(Utils.java:212)
at de.tum.in.tumcampusapp.auxiliary.Utils$3.run(Utils.java:362)
at java.lang.Thread.run(Thread.java:1027)

Reeenable the "next lecture" feature again

Früher gab es mal die Kategorie nächste Vorlesung. Leider gibt es die nicht mehr. Die fand ich extrem praktisch, da ich immer wusste wo und wann ich als nächstes hin muss

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@419c2928 is not valid; is your activity running?

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@419c2928 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:513)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
at android.view.Window$LocalWindowManager.addView(Window.java:537)
at android.app.Dialog.show(Dialog.java:278)
at android.app.AlertDialog$Builder.show(AlertDialog.java:932)
at de.tum.in.tumcampusapp.activities.CalendarActivity$3.onPostExecute(CalendarActivity.java:264)
at de.tum.in.tumcampusapp.activities.CalendarActivity$3.onPostExecute(CalendarActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:602)
at android.os.AsyncTask.access$600(AsyncTask.java:156)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

Integrate slides of Newspread (Faculty Screens), Caching, Widget/HomeScreen

wunderbar, endlich möchte jemand unseren JPG basierten RSS Feed nutzen! Hier
können Sie sich den gewünschten Feed / Bildschirm auswählen:
https://tum.newspread.de/page/newspreadLive

Da die Schrift auf den Bildschirmen in der Regel weiß ist, bedarf die RSS
Feedanzeige einen farbigen, idealerweise blauen, Hintergrund. Sie können
sich einen hier ddownloaden:
https://tum.newspread.de/images/screenProgram_bg.png

Allerdings muss ich gestehen, dass die Screenshots nur bei der Erstellung
der Folien erstellt werden. Alle RSS Feeds (Mensa, Spiegel) würde ich daher
an Ihrer Stelle nicht anzeigen lassen, da die Screenshots teilweise mehrere
Jahre alt sind. Ist das für Sie machbar?

java.lang.IllegalStateException: Fragment CalendarSectionFragment{427438b8} not attached to Activity

java.lang.IllegalStateException: Fragment CalendarSectionFragment{427438b8} not attached to Activity
at android.support.v4.app.Fragment.getResources(Fragment.java:571)
at de.tum.in.tumcampusapp.fragments.CalendarSectionFragment$1.run(CalendarSectionFragment.java:77)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Add Card Settings

Allow the user to decide which cards should be shown on the home screen.
Optional: order of the cards, which ones should be shown on an Android Wear device

Webservice: Feedback option

Add feedback option , collect logs, comment and send it to support email (Add DebugMode - to view TCA's logs)

Nils: Thinking about us as developers it might still be an idea to add a raw view on the error log, since you cannot access other app's logs on new Android versions anymore without root rights (e.g. protected feature behind a password or after activation of developer mode by tapping a few times on a button maybe)

Add Chat card

If there is a new lecture the user attends, where he/she has not decided if he/she want's to join the chat room, present him/her a yes/no card

MVV: Special Characters

Sometimes there is the error "No station found" / MVV for an existing station - Can we fix it? (I assume it's a YQL problem)

The Problem here is, that Garching Forschungszentrum is that it contains a dash instead of a space. Maybe need to send a second request with the replaced text

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 9, found: 8 Pager id: de.tum.in.tumcampus:id/pager Pager class: class android.support.v4.view.ViewPager Problematic adapter: class de.tum.in.tumcampus.adapters.CafeteriaDetailsSectionsPagerAdapter
at android.support.v4.view.ViewPager.populate(ViewPager.java:962)
at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
at android.view.View.measure(View.java:16497)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

On Startup

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at de.tum.in.tumcampus.models.managers.CafeteriaManager.onRequestCard(CafeteriaManager.java:184)
at de.tum.in.tumcampus.models.managers.CardManager.update(CardManager.java:47)
at de.tum.in.tumcampus.activities.StartupActivity$BootTask.doInBackground(StartupActivity.java:45)
at de.tum.in.tumcampus.activities.StartupActivity$BootTask.doInBackground(StartupActivity.java:36)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)

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.