Git Product home page Git Product logo

musicplayer's Introduction

Simple Music Player

롤리팝에서 추가된 머테리얼 디자인을 최대한 적용한 심플한 안드로이드 뮤직 플레이어 입니다.

기존에 사용하던 Google의 Play Music이 필요 없는 기능이 너무 많아 불만을 가지고 있던 중 자급자족 해보는 건 어떨까 하는 생각이 들어 한번 만들어 보게 되었습니다.

개발 환경

  • 개발 툴 : Android Studio 1.5
  • SDK 버전 :
    • minSdkVersion 16
    • targetSdkVersion 23
    • compileSdkVersion 23
  • 테스트
    • JUnit4
    • LeakCanary : Memory Leak 테스트 도구
    • Monkey : Android SDK에서 제공하는 UI 테스트 도구
  • 버전관리 : Git

개발이력 및 기간 (2015.11.23 ~ 2015.12.07)

개발기간

UI

네비게이션
레이아웃은 ViewPager, TabLayout, NavigationDrawer 을 이용하여 구성하였습니다.
플레이어
위의 화면이 처음 앱을 시작했을 때 보이는 화면으로 플레이어, 재생목록, 아티스트, 노래의 4개 화면 중 첫번째 화면입니다.
재생목록_Null
다음으로 두번째 화면인 재생목록 화면입니다. 하단의 FloatingActionButton을 통해 사용자 정의 플레이리스트를 추가할 수 있습니다.
재생목록_search_null
FAB를 눌러 진입한 AddPlaylistActivity의 화면입니다. 기본적으론 비어있습니다.
재생목록_songs
상단의 돋보기 아이콘을 눌러 SearchView를 이용해 얻은 음원들을 이용하거나,
재생목록_searched
음표 모양의 아이콘을 눌러 기기의 모든 음원을 이용할 수 있습니다.
재생목록_checked
추가하고자 하는 음원들을 선택하면 다음과 같이 테두리의 색상이 변경되며 하단의 FAB를 클릭하면 재생목록을 저장하기 위한 Dialog가 팝업되는데,
재생목록_add
여기서 아이템들을 누르면 추가하기 위한 목록에서 제거되며, 재생목록의 이름을 입력하고 저장 버튼을 누르면 저장됩니다.
재생목록_added
사용자 정의 플레이리스트가 추가된 재생목록 프래그먼트 입니다.
재생목록_delete
아이템을 롱클릭하면 삭제를 진행하기 위해 팝업을 띄웁니다.
아티스트
세번째 탭인 아티스트 입니다. 기기에 존재하는 모든 음원을 가수별로 나눠서 출력합니다. Child Item을 클릭하면 재생되며, 현재 재생 중이거나 일시정지 중인 음원의 상태를 알 수 있습니다.
노래
마지막 탭인 노래 입니다. 기기에 존재하는 모든 음원을 출력하며, Item을 클릭하면 해당 곡만 재생을 하고 ListView의 헤더 버튼을 클릭하면 모든 음원을 재생합니다. 우측에 위치한 ScrollBar을 이용하여 빠른 스크롤을 할 수 있습니다.
현재 재생
액션바에 위치한 리스트 아이콘을 클릭하면 현재 재생 중인 음원들을 표시하는 DialogFragment를 팝업합니다.
노티_롤리팝
롤리팝 이상의 알림바에서는 위와 같은 알림이 표시됩니다. 이전/다음 곡 재생, 재생/일시정지, 앱 종료 기능이 있습니다.
잠금화면
또한 잠금화면에서도 알림이 표시됩니다.
노티_젤리빈
젤리빈 버전에서는 Notification의 크기적인 문제나, 액션의 개수 제한, 그리고 확장알림을 기본적으로 활성화할 수 없어서 RemoteView를 이용하여 레이아웃을 구성하였습니다.

Structure (XMind)

구조

Features

  • 플레이어, 재생목록, 가수, 노래 목록 제공
  • 현재 재생 중인 곡 목록 제공
  • 목록에서의 빠른 스크롤
  • 알림바/잠금화면에서 이전/다음 곡 넘김, 재생/일시정지, 앱 종료
    • 잠금화면에서의 조작은 Android Lollipop 부터 가능합니다.
  • 1회 재생, 전체 반복, 셔플
  • 사용자 정의 플레이리스트, 쉽게 추가하는 즐겨찾기
  • 이전에 재생하던 곡 목록을 실행시 복원
  • 이어폰이 언플러그 되었을 때 자동 정지

Credits

  1. 다이나믹 비트맵 로딩 라이브러리

  2. 안드로이드 이벤트 버스

  3. Memory Leak 검출 라이브러리

  4. 크롬을 이용한 DB Browser 라이브러리

  5. 몽키 테스트

License

Copyright 2015. Pureum Choe

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

musicplayer's People

Contributors

massivcode avatar jju-sunnyside74 avatar sunnyside74 avatar junsuk5 avatar

Stargazers

 avatar

Watchers

 avatar

musicplayer's Issues

Notification 오류

태블릿을 랜드스케이프 상태로 둔 상태에서 Sleep을 깨우면 포트레이트 상태의 Notification에서 보이다가 랜드스케이프로 바뀌면 Notification내용이 사라짐
랜드스케이프 상태에서 Notification 리스트를 스크롤 해도 보이지 않음

잠자기 이후 리스트가 보이지 않게 됨

잠자기 이후 깨우면 재생목록, 아티스트, 노래 리스트가 보이지 않음
재생목록, 아티스트, 노래 리스트가 보이는 상태에서 재생목록을 선택해서 재생하고 잠자기에 들어간 후 다시 깨우면 보이지 않음
플레이어를 종료하고 다시 실행하면 보임

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.