Friday, September 21, 2012

Chương trình chơi nhạc đơn giản (part 3)

Link download chương trình: Google play link
Source code:  source code here at github
Chương trình chơi nhạc đơn giản đã hòm hòm sau một tháng vừa học vừa làm. Mình bổ sung thêm cho chương trình những thứ mà liên quan đến trải nghiệm của người sử dụng:
  • Làm notification ở status bar để người dùng biết service chơi nhạc đang chạy, bài gì đang hát và cho phép ấn vào để vào chương trình chơi nhạc.
  • WAKE_LOCK để máy không rơi vào trạng thái ngủ  (sẽ làm nhạc tắt giữa chừng) trong khi đang nghe nhạc. 
  • Quản lý audio focus để phát hiện ra những tình huống như có điện thoại gọi đến thì tắt nhạc, tin nhắn thông báo đến thì làm nhỏ nhạc lại để người dùng biết.
  • Phát hiện head phone được rút ra để tự động dừng nhạc - không gây ầm ỹ.
Chi tiết những thứ tiểu tiết này có thể xem ở đây: Android developer guide about media playback




Simple music player

Link: Google play
And source code: See source code here at github

So after a month, I finished making this simple music player and learned many things about developing android applications. From knowing nothing, now I could make a simple program. I think it's not bad.

In this program I used this library: HoloEverywhere to make the program looks like ICS.

Screenshot:


Bugfix:
+ 9/10/2012: fix a bug: service auto start if unplug the headphone. Updated to git.



Tuesday, September 18, 2012

Pass data between Activity-Activity and Activity-Service: Singleton

I managed to pass data between activities and service. Now I knew 2 methods:
  • Intent, Bundle: putting something like int, boolean, ... The tricky is when you try to put some complex data like a class. Implement a class with Parcelable interface will solve the problem. But it's rather complex, I don't know how to talk about it. But if you are interested, check this post (not mine):  Android Parcelable Example.
  • Singleton:  You can take advantage of the fact that your application components run in the same process through the use of a singleton. This is a class that is designed to have only one instance. It has a static method with a name such as getInstance() that returns the instance; the first time this method is called, it creates the global instance. Because all callers get the same instance, they can use this as a point of interaction. For example activity A may retrieve the instance and call setValue(3); later activity B may retrieve the instance and call getValue() to retrieve the last set value.
This post only talks about Singleton.

Wednesday, September 5, 2012

Library for android development

I found some good libraries for android. With them applications can be more like ICS, and UI experience much better.

HoloEverywhere

You can use this library to make an application with holo theme just like ICS. Everything from button to seekbar, dialog, ...

ViewPagerExtensions

This library can be used to make pager with tab above. It's just like what you saw in Google Play.

EDIT: 18/9/2012: After working for a while with this library, I found a bug with Swipey tabs. When you try to setCurrentIndex for the viewpager, somehow the tabs display wrong title. I also fixed this problem after 2 days. I made a fork of this github here: ViewPagerExtensions


ActionBarSherlock

This library will add to your application the Action Bar, which was introduced in Honeycomb 3.0 (SDK 11). But you can use it for android 2.x (SDK 7+).




Conclude

Look like they are licensed under Apache License 2.0. Actually I have no idea about this license thing, but I think I will take time to find out. For now, what I do in android developing is just learning.

Ah, this is the UI for the LeMusicPlayer after applied those libraries. Maybe ActionBar will be added a search button, menu. I will not hide my intention to copycat the Google Play Music application interface. After all, I make this application just for learning.

Tuesday, September 4, 2012

Chương trình chơi nhạc đơn giản (part 2)

Tiếp tục nghiên cứu sau khi làm Chương trình chơi nhạc đơn giản (part 1), mình học thêm vài thứ với android và bổ sung vào chương trình. Chủ yếu là tu sửa lại giao diện chương trình, học thêm về cách làm việc với xml trong việc tạo giao diện người dùng cho android:
  • Drag to sort listview: do bauerca làm. Đây là một class kế thừa từ ListView, bổ sung thêm tính năng kéo thả để sắp xếp lại thứ tự của danh sách. Tính năng này rất thích hợp cho playlist.
  • Chơi với xml cùng android (tốn khá nhiều thời gian), nhưng mình cũng đã có cái nhìn tổng quát về cách mà các loại layout, drawable, view làm việc khi thiết kế nó bằng xml.
Đây là giao diện hiện tại của chương trình. Nhìn có vẻ ngon lành cành đào hơn giao diện cũ đấy chứ? 
Giao diện mới
Giao diện cũ
See source code here at github




Sunday, September 2, 2012

Android UI Patterns

Today I've just found a very useful application on Google Play. It's Android UI Patterns. It gives you many user UI design patterns. Applying these design patterns will not only make your app more beautiful but also bring better user experience for users.
Demos come along with each pattern so you can preview what exactly those patterns are.
Also I found a website: http://www.androiduipatterns.com/.



Wednesday, August 29, 2012

Chương trình chơi nhạc đơn giản

Hôm nay là ngày 29/8/2012. Bắt đầu học lập trình android từ hôm 23/8. Trong mấy ngày cật lực mình đã làm được một chương trình chơi nhạc đơn giản. Chương trình này hiển thị danh sách tất cả bài hát có sẵn trong máy. Có nút chơi nhạc, nút Next và Previous. Một thanh cuộn để tua bài hát. Hiển thị tên bài hát hiện tại và thời gian chơi nhạc.
Bài viết chỉ nêu tóm tắt những gì đã học được khi viết chương trình này.
Mã nguồn xem ở cuối bài blog.

Sunday, August 26, 2012

Các thành phần của android

Lược dịch từ cuốn The Busy Coders Guide to Android Development(2011)

Các thành phần chính của android gồm có:

Tạo chương trình đầu tiên

Hướng dẫn chi tiết nằm ở: http://developer.android.com/training/basics/firstapp/creating-project.html
Dưới đây chỉ là bản viết lại (không hẳn là dịch lại) theo ý hiểu của cá nhân.

Bắt đầu sờ vào lập trình cho android

Một ngày đẹp trời quyết định học lập trình android. Hôm nay là 26/8/2012, mình đã thử sức với android được 3 ngày, nhưng chưa thấy ra ngô khoai gì hết.

Tài liệu về học lập trình android bằng tiếng anh từ google:

  1. Android developer website: http://developer.android.com/index.html
  2. Android training: http://developer.android.com/training/index.html

Các công cụ cần thiết:

  1. JRE để chạy java: http://www.oracle.com/technetwork/java/javase/downloads/index.html. Đây là Java runtime environment.
  2. Eclipse for java developers: http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/junor. Đây là IDE để phát triển ứng dụng java.
  3. SDK (software development kit) cho android: http://developer.android.com/sdk/index.html
  4. ADT (android development tools) của eclipse: http://developer.android.com/tools/sdk/eclipse-adt.html

Sau mấy ngày làm thử với android thì thấy:
Lập trình cho android có vẻ rất khó vì cần có nền nảng về:
  1. Ngôn ngữ lập trình java. Mình đã học từ rất lâu và hầu như đã quên hết. 
  2. Làm giao diện cho nó phải biết về xml. Cái này mình chỉ biết cơ bản là mở đóng tag. Ai mà làm với website rồi thì cái này chắc đơn giản hơn.