Code Monkey home page Code Monkey logo

android's Introduction

Amahi Amahi Android App

Get it on Google Play

Build Status Twitter #amahi on Freenode

This repository contains the source code for the Amahi Android app.

You will need JDK 1.8+ installed to work with it. Gradle, Android SDK, and project dependencies will be downloaded automatically.

Building the app

  1. Set API information.
$ vim api.properties
url.amahi = URL
url.proxy = URL
client.id = ID
client.secret = SECRET
chromecast.app.id = APP_ID

This is something to keep private and you obtain it by sending a message to [email protected].

  1. Build the application using a command line or using GUI.
$ ./gradlew clean assembleDebug
  1. Once you have built the application, you will be needing credentials to use the application. Go to Amahi website and create your account, once the account is activated, you will see the description on how to set up the Amahi server. However, this is not strictly needed, as we have a set up of a demo server called "Welcome to Amahi" which you should see even without your own server installed.

Code Style Convention

  • Set the Code Style Scheme to Default in Android Studio settings.
  • Run Reformat Code on changed files before committing.
  • Please check out the Code Style for Contributors section in AOSP and maintain as much consistency with them as possible.

Generating the documentation

  1. Install Android documentation.
$ android update sdk --no-ui --force --all --filter doc-21
  1. Generate the documentation.
$ ./gradlew clean assembleDebug generateDebugJavadoc

Debugging

  • For debugging the APIs and logging requests and responses you can either use Logcat on Android Studio or enable Chuck Interceptor (UI based) from the steps given here.

  • To debug with some special purpose server, you can find steps here.

android's People

Contributors

adi23arora avatar adithya321 avatar akash-ramjyothi avatar arturdryomov avatar asaikarthikeya avatar ayan-10 avatar balaji-ramavathu avatar chirag-jn avatar cpg avatar csoni111 avatar doomers avatar eradash avatar gopikaharikumar avatar joydeepsaha05 avatar jsdelivrbot avatar mattman73 avatar megabitdragon avatar mehtamanan0 avatar mohitsvnit avatar nikhilbalyan avatar octacode avatar rajavamsi11 avatar samarth30 avatar shivammaindola avatar stupidly-logical avatar sukhbir-singh avatar vanieka-sharma avatar varinder-km avatar vjs3 avatar zedlabs 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  avatar  avatar  avatar

android's Issues

Enhancement: Songs to play in background

I think it as an issue, when we play a song and as soon as I press the back button it stops. I feel it should still play in background as a service or something.
Should i work on this ?
whatsapp image 2017-03-09 at 1 38 43 am

Complete web page not showing

After clicking on the "amahi anywhere" link in Overview.html, it shows only the half part of the web page (vertically) instead of complete web page.

Information regarding API information is missing

As the API information due to security reasons kept private but new contributors don't know how to get them that's why they have been asking at different places. Same happened with me as well
I have added basic info on the same in the updated readme without exposing any API related actual information.

No `RETRY` button on hda selection screen

hda_selection_screen

There is no retry button present in this side navigation bar. If the fetching of hda list from the server fails for some reason, there is only one option that is to close the app and reopen again.

This happens a lot with me and it is irritating. So I would like to implement this feature. Suggest if a Button should be added or SwipeRefreshLayout.

ContentDescription for buttons : Accessibility feature of Android

ContentDescription for the buttons is for the Accessibility Features of Android. The contentDescription is what get's read back to the (assumingly blind or hard-of-sight user) so they have an idea of what the picture is since they aren't able to view it.
Can i send a PR for this ?

Swipe to change song.

I want to implement a feature which changes the song on swiping the AudioActivity just like done in Google Play Music. Can i work on it ?

Not showing complete picture after zoom.

After complete zoom of a picture, when we swipe left to see till the right most part of the image, it just changes the picture instead of showing the right part of the picture which I think should not happen.

localization support

this task is to enable the app to become fully localization available, including directions for translators on easily providing a new locale.

i can translate to spanish. some related strings that may be useful here are available in the platform locale strings.

Launching activity needs to change, logically Authentication activity should first to appear

When we open the app in signed out state. The first activity that is appearing on screen is Navigation activity. Then after checking authentication through service, app gets redirected to AuthenticationActivity for asking user credentials. This is the current app flow.

The point is that logically if the app is in signed out state, Authentication activity should be the first activity to appear in front of user, not the Navigation activity.

I want to fix this app flow. But need some discussion.

Adding android reactive extensions for better app interfacing

I think adding reactive extensions in the app will make the code more concise. For example the task of disabling the sign in button until the user types the both name and password can be done using rx. This is just one simple example.It can be implemented in many tasks. I would like to work on this :)
@cpg any views on this idea ?

App crashes with the newly added search feature

The search feature implemented in #36 by @octacode is a great addition but unfortunately it has some bugs.

  • To reproduce the bug first type something in the search bar and then with the search query typed in, click on a directory to open its content. Now if you type anything more in the search bar, the app crashes.

  • Also instead of adding 5 images for different sizes, a single vector drawable can be added.

I would like to send a pr for resolving this bug.

Adding support for AppCompatActivity

For the time being the activities don't support AppCompatActivity.

Benefits of using AppCompatActivity

It not only provide backwards compatibility to our app but also provides us the access to the Material Design Library too. After this we can easily add FloatingActionButtons, Snackbars, AlertDialogBoxes and other material design widgets easily which now we can't.

I'd be working on it.

Integration with libvlc 2.1.1

@megabitdragon created a new vlc2 branch in this tree that tries to use libvlc 2.1.1.

He only added the library dependency without any other changes to the code. The application will not build as is in that branch.

The task in this issue is to update the code as necessary to account for the new libvlc SDK and make it 1) compile properly and 2) run properly.

You can check this commit to get started by looking at what the VLC team did with their sample embedded player to get it adapted to the new version of the library. Presumably, our code may have to change in similar ways to adapt to the library.

Side note: no policy changes as to when invoke this player should be done. That is left for #17.

Keyboard covering Up TextFields

as @cpg mentioned there is a problem in some phones where the keyboard covers up the textfields , So what @cpg suggested was to move the logo down below like:

screenshot 06-mar-2017 2_26_02 am

What would you all suggest?

Setting up project

I have the code up and running. Where can I find URL, ID and SECRET to be updated in api.properties? I have registered on Amahi website.

Vim api.property settings

url.amahi = URL
url.proxy = URL
client.id = ID
client.secret = SECRET
what is the value for URL SECRET and ID
I'm facing issues in Retrofit

Use webview in settings's version

On selecting Version option from settings of the app, currently it is opening default browser and opening the web page. "Good practice" is to show the web page in the app only using web view, instead of redirecting it outside the app.

Replacing the png drawables by their vector counterparts

Currently we have png drawables for everything like back button, menu and other icons. Replacing png drawables with their vector counterpart which will be a one XML file for five drawables will definitely going to reduce APK size. Vector drawables also scale very well. PNG is a compressed image trying to make it bigger or smaller will make image doesn't look right.

okHttpClient cache restricts fetching new data from server, showing outdated results

A cache of size approx 10 MB has been set to the default singleton OkHttpClient. So as a http content is request, for the first time it fetches it from the server but from next time onwards it does not send an actual request and rather load the previous response from the cache itself.
This results in data not getting updated even on refreshing the content in the app.

So according to me this http cache can be removed.

Addition of screen transitions

Right now we don't have any screen transitions between intents. I think it will be good to add a nice slide_in and slide_out transition effect during intent transitions. I would like to work on this issue.

Replacing the listView and GridView with RecyclerView.

RecyclerView is much better than ListView and GridView performance wise and this is the reason why google prefers RV over list and grid view. For List view I will use R.V with LinearLayoutManager and for grid view We have to use GridLayoutManager.
I WOULD LIKE TO WORK ON IT

Issues with HomeUp button

When inside a directory Home up button directly takes the user to the list of shares instead of taking it in the upper folder.
For Example :- if we are in Demo/music and if home Up is pressed. We'll be redirected to the Shares fragment instead of Demo.
I am sending a PR for this.
Thanks

compilation failure

ideas?

$ ./gradlew assembleRelease

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'pluto'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:0.12.+.
     Required by:
         :pluto:unspecified
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
   > Could not resolve com.crashlytics.tools.gradle:crashlytics-gradle:1.+.
     Required by:
         :pluto:unspecified
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
   > Could not resolve com.jakewharton.sdkmanager:gradle-plugin:0.12.+.
     Required by:
         :pluto:unspecified
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
      > org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 9.941 secs

Adding search feature.

For the time being there's a sort feature in the ServerFilesFragment which obviously is awesome. I was thinking of adding search feature also. I will use a menu option which will be always shown clicking on which will actually open up the soft keyboard and text will be entered into the action bar. The actionbar edit text will have a textWatcher which will change the results according to per key click.
if there's any other implementation you all would like to suggest then please do.
I AM GOING TO WORK ON THIS ISSUE

Create a Variable of Support Library Version Number.

As of now in App we are using many libraries of Support Library, so we can create a variable in Build.gradle to remove redundancy.

After that we don't need to change Support Library Version Number for every Library(or Dependency)
, We just need to change value of that variable.
amahi supportlibrary

could not set up

could not build the project. it says
"Error:Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)"

any help?

Fixing app flow after clicking signout button in settings page

After clicking on sign out button in settings page, app gets redirected to login page. But then if user presses back button it reopens main activity, whereas as per expected behavior after login page appearance. Back button should close the app.

best ways to handle libvlc

We have discussed this before, and as we move forward, we will want to handle libvlc as smoothly as possible.

From my point of view (not being an Android expert), I see two main issues:

  1. compilation process for this app to bundle it in. we talked about using gradle to get it in. I am not sure if this is settled or not, though I see people compiling apks that crash with [1] when trying to stream video. I think we had a branch for this, but I don't know the status of it. Perhaps someone can review? This task has been separated for #33.
  2. the policy of when to invoke libvlc at run time. i don't know the current policy shipped, but the policy in iOS (which worked well), was: whitelist a default set of media types that will stream well in the main built-in video player in the platform (which means it will get Chromecast support, etc.), and for the rest of media types, fall back to vlc

[1] Can't load vlcjni library: java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/org.amahi.anywhere-2/lib/arm/libvlcjni.so: has text relocations

Adding more features to Video Player

I would like to add some more features to the video player.

  • Subtitles View along with dialog fragment to select the subtitles file
  • Screen Gestures:
    • swipe up/down on left to increase/decrease screen brightness
    • swipe up/down on right to increase/decrease volume
    • swipe left/right to seek the video
  • Showing the progress bar while buffering the video from remote

Suggest if any more features are required and can be added?

Image Viewer feature request

According to me the following features are missing in the Image Viewer of app:

  • Zoom in / Zoom out feature
  • Image Full Screen View (toggling fullscreen view onClick), just like in Video Viewer

Suggest if any more features can be added! Also I would like to work on this.

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.