GithubHelp home page GithubHelp logo

dejvino / amdroid Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 8.0 780 KB

Ampache client for Android. Forked from the official amdroid-h repo.

License: GNU General Public License v2.0

Groovy 0.30% Java 99.70%

amdroid's Introduction

Amdroid

Ampache client for Android. Allows streaming music from any Ampache server.

History

This is a fork of the official "amdroid-h" repo. Since there was no activity around this project in any way since 2010, I decided to kick-start this again.

Major Changes (WIP)

  • Reworked UI. The original design looked very outdated. This puts off many potential users.
  • Upgraded Android APIs. The aim is to drop all the deprecated dependencies and components.
  • Async Network/IO. Everything UI-unrelated has to be moved out of the main (UI) thread. This brings app responsiveness and better UX.
  • Robust application. Exceptions get handled properly. The app needs to be reliable.

amdroid's People

Contributors

dejvino avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

amdroid's Issues

API Compatibility Issues

Dear developers,

We have recently developed a state-of-the-art static analysis tool for uncovering API compatibility issues in Android apps. Applying this tool to open source apps on F-droid, we have exposed a few instances of compatibility issues and submitting them to development teams for a fix.

For your app, we have found that this project has accessed the following APIs which are available only on an API level higher than the declared minSdkVersion and which are accessed without proper protection. In other words, if those APIs get called at runtime, it will trigger a NoSuchMethodError and thus result in a crash of the running application.

<android.app.Fragment: android.content.Context getContext()>:[23,25]

Note that, because of the nature of the static analysis, we cannot confirm whether the flagged APIs would actually be called at runtime (e.g., unreachable code). However, we still believe that those APIs, which may cause compatibility issues, should not be accessed or at least be accessed with proper protections.

In addition to the aforementioned APIs (i.e., backward-compatibility), which could cause app crashes if accessed, we have also identified that this project has also accessed some APIs that have been removed from the latest public SDK, making the app possibly suffer from forward-compatibility issues.

<android.app.Notification: void setLatestEventInfo(android.content.Context,java.lang.CharSequence,java.lang.CharSequence,android.app.PendingIntent)>:[1,22]

We would be very much appreciated if you can acknowledge to us that those reported APIs are indeed problematic for the project’s long-term stability. please let us know if you need any more information relating to this issue report.

Added ru (Russian) translation

I have translated your application into ru (Russian). Here is the xml:

<!-- File "search_criterias.xml" -->
<resources>

    <string-array name="search">
        <item>Все</item>
        <item></item>
        <item></item>
        <item></item>
        <item></item>
    </string-array>
    
</resources>

<!-- File "strings.xml" -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Amdroid</string>
    <string name="prefs_name">Amdroid настройки</string>
    <string name="play_name">Проигрывается</string>
    <string name="server_preferences">Ampache сервер</string>
    <string name="title_server_preference">Ampache URL</string>
    <string name="summary_server_preference">Введите полный URL ampache сервера ( http://example.com/ampache )</string>
    <string name="dialog_server_preference">URL</string>
    <string name="title_username_preference">Ampache имя_польз-ля</string>
    <string name="dialog_username_preference">имя-польз-ля</string>
    <string name="title_password_preference">Ampache пароль</string>
    <string name="dialog_password_preference">пароль</string>
    <string name="search_label">Песни</string>
    <string name="shuffle">Вперемежку</string>
    <string name="shuffle2">|Вперемежку|</string>
    <string name="repeat">Повтор</string>
    <string name="repeat2">|Повтор|</string>
    <color name="log_title_debug">#AAAAAA</color>
    <color name="log_title_info">#FAFAFA</color>
    <color name="log_title_warning">#FFFF11</color>
    <color name="log_title_critical">#FF3311</color>
</resources>


Translation made with Stringlate.

Memory Leak

After a double rotation of the MainActivity there are in heap memory 2 instances more of:

class com.sound.ampache.fragments.PlaylistFragment @ 0x12cd8800
class com.sound.ampache.MainActivity @ 0x12cb7800

It should not be like this because the rotations return to the same GUI state and the memory should stay in the same state as well. It could be a symptom of a bad management of the onCreate-onDestroy lifecycle.

I have encountered this problem on an Android emulator running 7.1.1 os version.

VerifyError: com/sound/ampache/net/AmpacheApiClient

//package name: com.sound.ampache
//version: 2.0.0
//target sdk version: android-18
java.lang.VerifyError: com/sound/ampache/net/AmpacheApiClient
at com.sound.ampache.net.NetworkWorker.(NetworkWorker.java:80)
at com.sound.ampache.GlobalNetworkClient.(GlobalNetworkClient.java:48)
at com.sound.ampache.amdroid.onCreate(amdroid.java:59)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4444)
at android.app.ActivityThread.access$1300(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)

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.