My Project

Animation

https://github.com/daimajia/AndroidViewAnimations/

Fragment

https://www.learn2crack.com/2014/05/android-working-with-fragments.html/

Navigation

https://www.simplifiedcoding.net/android-navigation-drawer-example-using-fragments/

http://manishkpr.webheavens.com/android-navigation-drawer-example-using-fragments/

Gửi và lưu trữ file từ Android lên server NodeJS

https://www.youtube.com/playlist?list=PLzrVYRai0riSM4c75TZKVNlzkMdHgo_OZ

ReclyerView

https://www.raywenderlich.com/126528/android-recyclerview-tutorial/

Volley Libraries

https://www.simplifiedcoding.net/android-volley-tutorial-to-get-json-from-server/

Write NFC Tags

http://www.framentos.com/en/android-tutorial/2012/07/31/write-hello-world-into-a-nfc-tag-with-a/

Quit app when press back button

When you press back and then you finish your current activity(say A), you see a blank activity with your app logo(say B), this simply means that activity B which is shown after finishing A is still in backstack, and also activity A was started from activity B, so in activity, You should start activity A with flags as

Intent launchNextActivity;
launchNextActivity = new Intent(B.class, A.class);
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);                  
launchNextActivity.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(launchNextActivity);

Now your activity A is top on stack with no other activities of your application on the backstack.

Now in the activity A where you want to implement onBackPressed to close the app, you may do something like this,

private Boolean exit = false;
@Override
    public void onBackPressed() {
        if (exit) {
            finish(); // finish activity
        } else {
            Toast.makeText(this, "Press Back again to Exit.",
                    Toast.LENGTH_SHORT).show();
            exit = true;
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    exit = false;
                }
            }, 3 * 1000);

        }

    }

The Handler here handles accidental back presses, it simply shows a Toast, and if there is another back press within 3 seconds, it closes the application.

http://stackoverflow.com/questions/20591959/android-quit-application-when-press-back-button

TabLayout

http://www.androidhive.info/2012/05/android-combining-tab-layout-and-list-view/

http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

Read File From SQLite Manager

https://www.youtube.com/watch?v=fois68mF0LA

Hàm đọc file  https://github.com/vanpho93/ManageEmployee/blob/master/COPY%20ME

Blur Image

https://futurestud.io/tutorials/how-to-use-the-renderscript-support-library-with-gradle-based-android-projects

https://github.com/wasabeef/Blurry

Integrate Facebook

https://developers.facebook.com/docs/facebook-login/android/

https://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app–cms-23837

http://stackoverflow.com/questions/11896304/openssl-is-not-recognized-as-an-internal-or-external-command

http://stacktips.com/tutorials/android/how-to-get-key-hashes-for-android-facebook-app

Youtube API

https://www.sitepoint.com/using-the-youtube-api-to-embed-video-in-an-android-app/

http://tuhocandroid.com/su-dung-youtube-api-toan-tap-tren-android/

GoogleMap

http://o7planning.org/vi/10501/huong-dan-su-dung-google-maps-android-api

Thêm vào thư viện phụ thuộc (bắt buộc)

?

1 compile ‘com.google.android.gms:play-services-maps:9.6.1’

compile ‘com.android.support:recyclerview-v7:24.2.0’

MockUp

https://www.lucidchart.com/documents/edit/c51cb23f-2ddd-410a-9ebc-5d2f365b030f#

My Project

https://drive.google.com/open?id=0B1crY7GYX9BsUFhMVmRMeGprSnM

Full reliable Tutorial

https://duythanhcse.wordpress.com/lap-trinh-di-dong/android/

NFC Tag

https://www.learn2crack.com/2016/10/android-reading-and-writing-nfc-tags.html

Lưu ảnh từ bộ nhớ vào sqlite

http://www.coderzheaven.com/2012/12/23/store-image-android-sqlite-retrieve-it/

Shopping Cart

http://www.androiddom.com/2011/02/android-shopping-cart-tutorial.html

Intent

https://duythanhcse.wordpress.com/2013/04/19/bai-tap-24-thuc-hanh-ve-intent-trong-android/

Mở một Activity khác đồng thời truyền dữ liệu qua.

– Bạn xem hình Tôi minh họa dưới này:

– Ở đây Ta thường dùng đối tượng Bundle để đóng gói dữ liệu để truyền tải qua các Activity khác.

– Tại sao lại nên dùng Bundle để truyền tải dữ liệu qua lại giữa các Activity?

+ Tối lấy ví dụ sau: Giả sử bạn phải chuyển toàn bộ hàng hóa từ Việt Nam sang Singapore, trường hợp này Ta sẽ bỏ tất cả các hàng hóa vào trong 1 Container rồi chuyển Container này đi, Không phải chuyển từng món hàng 1 qua Singapore. Tương tự như vậy, đối với Android khi truyền dữ liệu chúng ta cũng có thể truyền từng thông số riêng lẻ nhưng chúng ta không nên, chúng ta phải bỏ tất cả các dữ liệu riêng lẻ đó vào 1 Bundle rồi gửi Bundle này qua Activity nào đó. Bên kia chỉ cần lấy Bundle này ra, mọi dữ liệu đều nằm trong Bundle và ta dễ dàng xử lý.

– Bundle có 2 loại phương thức: putXXX dùng để cho bên gửi đi, ứng với kiểu dữ liệu nào thì put đúng kiểu đó. ở ví dụ trên putInt và putDouble là tương ứng với 2 loại dữ liệu khác nhau (phải đi kèm với key để bên nhận có thể xử lý đúng)

– Ở bên nhận Bundle thì dùng các phương thức getXXX tương ứng để lấy dữ liệu theo key bên gửi.

– key này phải giống nhau cho cả 2 nơi. Nơi nhận đặt key=soa thì bên nhận cũng phải dùng key=soa.

– Ta cũng có thể truyền Đối Tượng qua lại giữa các Activity, các đối tượng này phải được Serialize

– Trong trường hợp truyền đối tượng thì ta dùng putSerializable và getSerializable

– Tôi sẽ làm một ví dụ đơn giản với giao diện như bên dưới:

– Từ MainActivity có 2 thông số là a và b. Khi nhấn nút Kết quả nó sẽ truyền 2 thông số này qua ResultActivity và tiến hành giải phương trình bậc 1. Muốn trở về để tiếp tục giải phương trình khác khi nhấn nút Back.

StartActivityForResut

Mở một Activity khác đồng thời truyền dữ liệu qua và xử lý kết quả trả về.

– Ví dụ này bạn sẽ biết cách xử lý kết quả trả về như thế nào.

– Bạn xem hình minh họa:

– Chúng ta sẽ dựa vào requestCodeID và resultCode để xử lý.

– Việc tạo Intent trong trường hợp này cũng y xì như trường hợp trước. Nó chỉ khác hàm gọi :

– Và phải thêm hàm xử lý kết quả trả về:

onActivityResult(int requestCode, int resultCode, Intent data)

Ta kiểm tra requestCode và resultCode cho đúng

requestCode là bên MainActivity dùng để triệu gọi một Activity bất kỳ nào đó

resultCode là kết quả trả về trong hàm setResult(resultcode, intent); của sub Activity nào đó. Hàm này cho chúng ta biết kết quả trả về là code nào và đồng thời cho ta biết luôn Intent của nó. Dựa vào Intent này mà trong onActivityResult ta có thể dễ dàng lấy thông số ra (đối số thứ 3).

http://o7planning.org/vi/10425/huong-dan-su-dung-intent-trong-android

ListView

http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-baseadapter/

Media Player

https://examples.javacodegeeks.com/android/android-mediaplayer-example/

https://code.tutsplus.com/tutorials/create-a-music-player-on-android-project-setup–mobile-22764

https://code.tutsplus.com/tutorials/create-a-music-player-on-android-user-controls–mobile-22787

http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

List Music

https://www.youtube.com/watch?v=aZiRJCWpFhE

Sqlite

http://www.tutorialspoint.com/android/android_sqlite_database.htm

notification music

http://www.tutorialsface.com/2015/08/android-custom-notification-tutorial/

SearchView

http://blog.nkdroidsolutions.com/android-searchview-in-listview-example-tutorial/

Services trong Android

By laptrinhtuduy on 27/04/2014

5 Votes

Một Service là một thành phần được chạy bên trong nền để xử lý các công việc trong thời gian dài. Một ứng dụng nghe nhạc có thể phát nhạc, trong khi đó người dùng đang ở giao diện của ứng dụng khác. Hoặc ứng dụng download có thể tải dữ liệu trên mạng về máy mà không ngăn chặn người dùng tương tác với các ứng dụng khác. Một Service gồm hai trạng thái cơ bản:

  • Started: Mộtservice được gọi là started khi một thành phần của ứng dụng, chẳng hạn như là activity, start nó bằng cách gọi phương thức startService(). Mỗi lần đượcstartedservice chạy bên dưới vô thời hạn, thậm chí ngay cả khi thành phần đã startednó bị hủy.
  • Bound: Mộtservice được gọi là bound khi một thành phần ứng dụng liên kết với nó bằng cách gọi phương thức bindService(). Một dịch vụ ràng buộc cung cấp một giao diện client-server cho phép các thành phần tương tác với service, gửi yêu cầu, nhận kết quả, thậm chí tương tự trong việc giao tiếp với interprocess (IPC).

Mỗi service có tập các phương thức và bạn có thể implement để giám sát việc thay đổi các trạng thái của service, và thậm chí bạn có thể thực hiện các công việc ở mỗi trạng thái thích hợp.

Trong sơ đồ sau phía bên trái mô tả vòng đời của service khi được tạo với startService(), và phía bên phải mô tả vòng đời của service khi được tạo với bindService().

Để tạo một service bạn có thể tạo một class kế thừa class ServiceClass Service có nhiều phương thức callback, bạn không cần phải implement hết các phương thức này, tuy nhiên việc hiểu rõ và áp dụng chúng trong code là rất quan trọng trong việc đáp ứng yêu cầu của người dùng.

  • onStartCommand(): Hệ thống gọi phương thức này khi có một thành phần khác, chẳng hạn nhưactivity, yêu cầu service đã được started, bởi gọi phương thúc startService(). Nếu bạn implement phương thức này thì bạn phải có trách nhiệm stop service khi công việc của nó đã hoàn thành, bằng cách gọi phương thức stopSelf() hoặc stopService().
  • onBind(): Hệ thống gọi phương thức này khi có một thành phần khác một liên kết vớiservicebằng cách gọi phương thức bindService(). Nếu bạn implement phương thức này, thì bạn phải cung cấp một giao diện để client sử dụng giao tiếp với service, bằng cách trả về đối tượng IBinder. Bạn phải luôn implement phương thức này, tuy nhiên nếu bạn không muốn các liên kết, thì có thể trả vể null.
  • onUnbind(): Hệ thống gọi phương thức này khi tất cả cácclient đã bị ngắt kết nối từ một giao diện đặt biệt được tạo bởi các service.
  • onRebind(): Hệ thống gọi phương thức này khi có một client mới được kết nối vớiservice, mà trước đó đã có thông báo rằng tất cả đã bị ngắt kết nối bởionUnbind().
  • onCreate(): Hệ thống gọi phương thức này khiservice được tạo lần đầu tiên bởi gọi phương thức onStartCommand() hoặc onBind().
  • onDestroy(): Hệ thống gọi phương thức này khiservice đã không còn được sử dụng trong thời gian dài. Bạn nên gọi phương phức này để giải phóng các tài nguyên hệ thống
  • http://o7planning.org/vi/10421/huong-dan-su-dung-service-trong-android
  • http://myclass.vn/course/cac-chuc-nang-nang-cao-trong-android/

Full reliable Tutorial

https://duythanhcse.wordpress.com/lap-trinh-di-dong/android/

Gửi và lưu trữ file từ Android lên server NodeJS

https://www.youtube.com/playlist?list=PLzrVYRai0riSM4c75TZKVNlzkMdHgo_OZ

Read File From SQLite Manager

https://www.youtube.com/watch?v=fois68mF0LA

Hàm đọc file  SQLite

https://github.com/vanpho93/ManageEmployee/blob/master/COPY%20ME

Blur Image

https://futurestud.io/tutorials/how-to-use-the-renderscript-support-library-with-gradle-based-android-projects

https://github.com/wasabeef/Blurry

Integrate Facebook

https://developers.facebook.com/docs/facebook-login/android/

https://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app–cms-23837

http://stackoverflow.com/questions/11896304/openssl-is-not-recognized-as-an-internal-or-external-command

http://stacktips.com/tutorials/android/how-to-get-key-hashes-for-android-facebook-app

Youtube API

https://www.sitepoint.com/using-the-youtube-api-to-embed-video-in-an-android-app/

http://tuhocandroid.com/su-dung-youtube-api-toan-tap-tren-android/

GoogleMap

http://o7planning.org/vi/10501/huong-dan-su-dung-google-maps-android-api

Thêm vào thư viện phụ thuộc (bắt buộc)

compile ‘com.google.android.gms:play-services-maps:9.6.1’

Thư viện cho Recycleview

compile ‘com.android.support:recyclerview-v7:24.2.0’

MockUp

https://www.lucidchart.com/documents/edit/c51cb23f-2ddd-410a-9ebc-5d2f365b030f#

Intent

https://duythanhcse.wordpress.com/2013/04/19/bai-tap-24-thuc-hanh-ve-intent-trong-android/

Mở một Activity khác đồng thời truyền dữ liệu qua.

– Bạn xem hình Tôi minh họa dưới này:

24_intent_4

– Ở đây Ta thường dùng đối tượng Bundle để đóng gói dữ liệu để truyền tải qua các Activity khác.

– Tại sao lại nên dùng Bundle để truyền tải dữ liệu qua lại giữa các Activity?

+ Tối lấy ví dụ sau: Giả sử bạn phải chuyển toàn bộ hàng hóa từ Việt Nam sang Singapore, trường hợp này Ta sẽ bỏ tất cả các hàng hóa vào trong 1 Container rồi chuyển Container này đi, Không phải chuyển từng món hàng 1 qua Singapore. Tương tự như vậy, đối với Android khi truyền dữ liệu chúng ta cũng có thể truyền từng thông số riêng lẻ nhưng chúng ta không nên, chúng ta phải bỏ tất cả các dữ liệu riêng lẻ đó vào 1 Bundle rồi gửi Bundle này qua Activity nào đó. Bên kia chỉ cần lấy Bundle này ra, mọi dữ liệu đều nằm trong Bundle và ta dễ dàng xử lý.

– Bundle có 2 loại phương thức: putXXX dùng để cho bên gửi đi, ứng với kiểu dữ liệu nào thì put đúng kiểu đó. ở ví dụ trên putInt và putDouble là tương ứng với 2 loại dữ liệu khác nhau (phải đi kèm với key để bên nhận có thể xử lý đúng)

– Ở bên nhận Bundle thì dùng các phương thức getXXX tương ứng để lấy dữ liệu theo key bên gửi.

– key này phải giống nhau cho cả 2 nơi. Nơi nhận đặt key=soa thì bên nhận cũng phải dùng key=soa.

– Ta cũng có thể truyền Đối Tượng qua lại giữa các Activity, các đối tượng này phải được Serialize

– Trong trường hợp truyền đối tượng thì ta dùng putSerializable và getSerializable

– Tôi sẽ làm một ví dụ đơn giản với giao diện như bên dưới:

– Từ MainActivity có 2 thông số là a và b. Khi nhấn nút Kết quả nó sẽ truyền 2 thông số này qua ResultActivity và tiến hành giải phương trình bậc 1. Muốn trở về để tiếp tục giải phương trình khác khi nhấn nút Back.

StartActivityForResut

Mở một Activity khác đồng thời truyền dữ liệu qua và xử lý kết quả trả về.

– Ví dụ này bạn sẽ biết cách xử lý kết quả trả về như thế nào.

– Bạn xem hình minh họa:

– Chúng ta sẽ dựa vào requestCodeID và resultCode để xử lý.

– Việc tạo Intent trong trường hợp này cũng y xì như trường hợp trước. Nó chỉ khác hàm gọi :

– Và phải thêm hàm xử lý kết quả trả về:

onActivityResult(int requestCode, int resultCode, Intent data)

Ta kiểm tra requestCode và resultCode cho đúng

requestCode là bên MainActivity dùng để triệu gọi một Activity bất kỳ nào đó

resultCode là kết quả trả về trong hàm setResult(resultcode, intent); của sub Activity nào đó. Hàm này cho chúng ta biết kết quả trả về là code nào và đồng thời cho ta biết luôn Intent của nó. Dựa vào Intent này mà trong onActivityResult ta có thể dễ dàng lấy thông số ra (đối số thứ 3).

http://o7planning.org/vi/10425/huong-dan-su-dung-intent-trong-android

ListView

http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-baseadapter/

Media Player

https://examples.javacodegeeks.com/android/android-mediaplayer-example/

https://code.tutsplus.com/tutorials/create-a-music-player-on-android-project-setup–mobile-22764

https://code.tutsplus.com/tutorials/create-a-music-player-on-android-user-controls–mobile-22787

http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

List Music

https://www.youtube.com/watch?v=aZiRJCWpFhE

Sqlite

http://www.tutorialspoint.com/android/android_sqlite_database.htm

notification music

http://www.tutorialsface.com/2015/08/android-custom-notification-tutorial/

SearchView

http://blog.nkdroidsolutions.com/android-searchview-in-listview-example-tutorial/

Services trong Android

By laptrinhtuduy on 27/04/2014

1172852.png

Một Service là một thành phần được chạy bên trong nền để xử lý các công việc trong thời gian dài. Một ứng dụng nghe nhạc có thể phát nhạc, trong khi đó người dùng đang ở giao diện của ứng dụng khác. Hoặc ứng dụng download có thể tải dữ liệu trên mạng về máy mà không ngăn chặn người dùng tương tác với các ứng dụng khác. Một Service gồm hai trạng thái cơ bản:

  • Started: Mộtservice được gọi là started khi một thành phần của ứng dụng, chẳng hạn như là activity, start nó bằng cách gọi phương thức startService(). Mỗi lần đượcstartedservice chạy bên dưới vô thời hạn, thậm chí ngay cả khi thành phần đã startednó bị hủy.
  • Bound: Mộtservice được gọi là bound khi một thành phần ứng dụng liên kết với nó bằng cách gọi phương thức bindService(). Một dịch vụ ràng buộc cung cấp một giao diện client-server cho phép các thành phần tương tác với service, gửi yêu cầu, nhận kết quả, thậm chí tương tự trong việc giao tiếp với interprocess (IPC).

Mỗi service có tập các phương thức và bạn có thể implement để giám sát việc thay đổi các trạng thái của service, và thậm chí bạn có thể thực hiện các công việc ở mỗi trạng thái thích hợp.

Trong sơ đồ sau phía bên trái mô tả vòng đời của service khi được tạo với startService(), và phía bên phải mô tả vòng đời của service khi được tạo với bindService().

Để tạo một service bạn có thể tạo một class kế thừa class ServiceClass Service có nhiều phương thức callback, bạn không cần phải implement hết các phương thức này, tuy nhiên việc hiểu rõ và áp dụng chúng trong code là rất quan trọng trong việc đáp ứng yêu cầu của người dùng.

  • onStartCommand(): Hệ thống gọi phương thức này khi có một thành phần khác, chẳng hạn nhưactivity, yêu cầu service đã được started, bởi gọi phương thúc startService(). Nếu bạn implement phương thức này thì bạn phải có trách nhiệm stop service khi công việc của nó đã hoàn thành, bằng cách gọi phương thức stopSelf() hoặc stopService().
  • onBind(): Hệ thống gọi phương thức này khi có một thành phần khác một liên kết vớiservicebằng cách gọi phương thức bindService(). Nếu bạn implement phương thức này, thì bạn phải cung cấp một giao diện để client sử dụng giao tiếp với service, bằng cách trả về đối tượng IBinder. Bạn phải luôn implement phương thức này, tuy nhiên nếu bạn không muốn các liên kết, thì có thể trả vể null.
  • onUnbind(): Hệ thống gọi phương thức này khi tất cả cácclient đã bị ngắt kết nối từ một giao diện đặt biệt được tạo bởi các service.
  • onRebind(): Hệ thống gọi phương thức này khi có một client mới được kết nối vớiservice, mà trước đó đã có thông báo rằng tất cả đã bị ngắt kết nối bởionUnbind().
  • onCreate(): Hệ thống gọi phương thức này khiservice được tạo lần đầu tiên bởi gọi phương thức onStartCommand() hoặc onBind().
  • onDestroy(): Hệ thống gọi phương thức này khiservice đã không còn được sử dụng trong thời gian dài. Bạn nên gọi phương phức này để giải phóng các tài nguyên hệ thống
  • http://o7planning.org/vi/10421/huong-dan-su-dung-service-trong-android
  • http://myclass.vn/course/cac-chuc-nang-nang-cao-trong-android/
Advertisements