Tuesday, May 6, 2014

Ứng dụng hiệu ứng để chuyển activity trong Android





Một ví dụ nhỏ để hình dung animation trong Android

Tạo hiệu ứng chuyển activity

- Khi chuyển activity thay vì lật đơn giản chúng ta tạo hiệu ứng zoom-in và zoom-out để chuyển activity.

Bước 1. Tạo các hoạt cảnh với XML file

Tạo file in.xml và out.xml trong thư mục anim (lưu ý chính xác tên thư mục)

- Nôi dung in.xml

1 <set xmlns:android="http://schemas.android.com/apk/res/android" >
2 <alpha
3 android:duration="3000"
4 android:fillAfter="true"
5 android:fromAlpha="0.0"
6 android:toAlpha="1.0" >
7 </alpha>
8 </set>

- Nội dung out.xml


1 <set xmlns:android="http://schemas.android.com/apk/res/android" >
2 <alpha
3 android:duration="4000"
4 android:fillAfter="true"
5 android:fromAlpha="1.0"
6 android:toAlpha="0.0" >
7 </alpha>
8
9 <rotate
10 android:duration="3000"
11 android:fillAfter="true"
12 android:fromDegrees="0"
13 android:interpolator="@android:anim/accelerate_decelerate_interpolator"
14 android:pivotX="50%"
15 android:pivotY="50%"
16 android:toDegrees="360" >
17 </rotate>
18 </set>

Bước 2. Gán hình nền cho màn hình chào

Mở lại layout màn hình chào và gán thuộc tính background và đặt tên cho RelativeLayout. Hình s_1 của background là hình nằm trong thư mục drawable

1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/bg"
4 android:background="@drawable/s_1"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:paddingBottom="@dimen/activity_vertical_margin"
8 android:paddingLeft="@dimen/activity_horizontal_margin"
9 android:paddingRight="@dimen/activity_horizontal_margin"
10 android:paddingTop="@dimen/activity_vertical_margin"
11 tools:context="vn.cusc.animation.Chao$PlaceholderFragment" >
12 </RelativeLayout>

Bước 3. Gán hiệu ứng rõ dần cho màn hình chào và hiệu ứng chuyển sang giao diện chính


1 public class Chao extends Activity {
2 RelativeLayout rl;
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_chao);
7 // tham chi?u d?n background activity
8 rl = (RelativeLayout)findViewById(R.id.bg);
9 // load ho?t hình cho màn hinh n?n
10 Animation a = AnimationUtils.loadAnimation(this, R.anim.in);
11 // ch?y hi?u ?ng rõ d?n
12 rl.setAnimation(a);
13 CountDownTimer t = new CountDownTimer(2000,1000) {
14 @Override
15 public void onTick(long millisUntilFinished) {
16 // c?u trúc màu ARGB trong dó A là alpha là d? trong su?t
17 }
18 @Override
19 public void onFinish() {
20 Intent i = new Intent(getApplicationContext(), Main.class);
21 startActivity(i);
22 overridePendingTransition(R.anim.in, R.anim.out);
23 finish();
24 }
25 };
26 t.start();
27 }
28 }
Bây giờ chạy lại ứng dụng quan sát hiệu ứng

Monday, May 5, 2014

Tìm hiểu GOOGLE MAP API V3 - xây dựng ứng dụng đánh dấu các điểm trên bản đồ cùng với Google Map API, PHP, Mysql, XML

Một bài tham khảo về sử dụng dữ liệu bản đồ google (tham khảo)

  • Từ xưa tới nay việc thiết lập một bản đồ địa lý cho một vùng luôn luôn được sự quan tâm lớn đối với con người. Nhắc tới bản đồ ta thường hình dung tới nó chỉ phục vụ cho các nhà thám hiểm các nhà địa lý, khảo cổ. Nhưng không hẳn vậy một bản đồ được xây dựng giúp cho nhà nước, cho tất cả các nghiên cứu khoa học, các thương nhân...Mỗi người dùng đều có mục đích riêng của mình.

  • Ngày nay với sự bùng nổ của Internet, có rất nhiều bản đồ số được xây dựng. Nó rất quan trọng cho con người và công việc. Nhu cầu con người ngày càng lớn, ai cũng cần đến bản đồ( bạn thử hình dung khi đầu tiên đến Hà Nội với kiến trúc như bây giờ nếu không có bản đồ trong tay thì sẽ như thế nào? ). Vì vậy ai, đơn vị, tổ chức nào? sẽ cung cấp cho chúng ta?

  • Google Map cung cấp cho chúng ta toàn bộ bản đồ của thế giới. Không những vậy, các API họ cung cấp giúp cho các nhà phát triển xây dựng nên các ứng dụng đáp ứng phần nào đó nhu cầu của con người. Giờ đây Google đã phát triển nên đến phiên bản gọi là :"Google Map API V3".


Đọc thêm tại đây http://dev.vast.vn/tuananh/Web/C%C4%90077#chuong3

Semantic_Web

Sunday, May 4, 2014

Giả lập Android với Genymotion

Trong quá trình phát triển ứng ụng trên Android chúng ta thương sử dụng máoy ảo (giả lập) hệ điều hành Android để kiểm thử ứng dụng hay có thể chạy trên máy thật.

Tuy nhiên đối với bộ giả lập tích hợp trong ADT hay ADT plugin trên eclipse rất nặng nề và chậm chạm còn đối với thiết bị thật thì rất khó đế có thể có nhiều thiết bị để test với các kích thước khác nhau của màn hình.

Genymotion là một giải pháp tốt: nhanh và nhẹ giúp việc phát triển và kiểm thử ứng dụng trở nên nhẹ nhành hơn.

Tổng quan genymotion (Video)

  1. Đăng ký/ đăng nhập vào genymotion
  2. Download file cài đặt cho window 64 bits (with VirtualBox) v2.2.0
  3. Cài đặt (VirtualBox và genymotion)
  4. Tạo máy ảo Android

image Nhấn Add để tạo (cần đăng nhập tài khoản tạo ở bước 1)

image Chọn phiên bản phù hợp và nhấn Next

image

Đặt tên và nhấn Next

 image

Đợi download xong sex thấy máy ở trong danh sách như hình 1. Khởi động máy ảo bằng cách chọn 1 máy ảo rồi nhấn Play

image Đợi một tí máy ảo sẽ khởi động xong (nhanh hơn máy ảo tích hợp trong ATD nhiều)

imageVà đây là kết quả. Tuy nhiên, để có được google play services thì cần phải làm một số bước nữa

  1. Download thư viện
  2. Kéo thả file download vào máy ảo ( cứ nhấn OK cho đến khi xong)

image 

image

 image Reboot lại máy ảo để cập nhật.

Đăng nhập với tài khoản google và test các dịch vụ của goole trên máy ảo genymotion

image Nhấn Yes nếu đã có tài khoản, không thì đăng ký nhé

image Nhấn OK và nhấn chấp nhận các điều khoản cho đến khi hoàn thành

imageGiờ thì đã thấy Play Store rồi đó :).

image  Và đây là cài đặt từ play store

imageChạy YouTube trên máy ảo genymotion.

Tới đây thì các bạn có thể tự tạo các máy ảo với các phiên bản Android khác nhau để kiểm thử ứng dụng của mình.

 

GOOD LUCK.

Friday, May 2, 2014

JSON format and visual display - http://jsonviewer.stack.hu/

Trang web miễn phí giúp việc phân tích json trở nên đơn giản hơn

Ví dụ với playlist của YouTube trả về https://gdata.youtube.com/feeds/api/playlists/PLXImJ6jTTEi4JYaz0NrO0_bCEfn-eaCwz?v=2&alt=jsonc

Thay vì

1 {"apiVersion":"2.1","data":{"id":"PLXImJ6jTTEi4JYaz0NrO0_bCEfn-eaCwz","author":"ntdanable","title":"Videos winform C#","description":"","thumbnail":{"sqDefault":"https://i.ytimg.com/vi/OYV9xsZSFgA/default.jpg","hqDefault":"https://i.ytimg.com/vi/OYV9xsZSFgA/hqdefault.jpg"},"content":{"5":"http://www.youtube.com/p/PLXImJ6jTTEi4JYaz0NrO0_bCEfn-eaCwz"},"totalItems":10,"startIndex":1,"itemsPerPage":25,"items":[{"id":"PL7Dmo3mHp_ePvPxuTq_LDHK6PrZ9Ec3eGW8jZwOqehVg","position":1,"author":"ntdanable","video":{"id":"OYV9xsZSFgA","uploaded":"2012-12-27T12:25:13.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"Bu?i 00","description":"T?ng quan v? window form","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/OYV9xsZSFgA/default.jpg","hqDefault":"https://i1.ytimg.com/vi/OYV9xsZSFgA/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=OYV9xsZSFgA&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=OYV9xsZSFgA"},"content":{"5":"https://www.youtube.com/v/OYV9xsZSFgA?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r8---sn-a5m7zu7d.c.youtube.com/CiULENy73wIaHAkAFlLGxn2FORMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r8---sn-a5m7zu7d.c.youtube.com/CiULENy73wIaHAkAFlLGxn2FORMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":5323,"viewCount":552,"favoriteCount":0,"commentCount":1,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHC7bijtgLtjeNAKrbqDHgU8","position":2,"author":"ntdanable","video":{"id":"0upGEc3Ij1k","uploaded":"2012-12-27T12:16:55.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P1","description":"","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/0upGEc3Ij1k/default.jpg","hqDefault":"https://i1.ytimg.com/vi/0upGEc3Ij1k/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=0upGEc3Ij1k&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=0upGEc3Ij1k"},"content":{"5":"https://www.youtube.com/v/0upGEc3Ij1k?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r2---sn-a5m7zu7k.c.youtube.com/CiULENy73wIaHAlZj8jNEUbq0hMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r2---sn-a5m7zu7k.c.youtube.com/CiULENy73wIaHAlZj8jNEUbq0hMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":1403,"viewCount":298,"favoriteCount":0,"commentCount":2,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHPnX3WIaCI7jfK987P_Pbxs","position":3,"author":"ntdanable","video":{"id":"kG3qahrmhOU","uploaded":"2012-12-27T12:23:54.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P2","description":"Vdeo hu?ng d?n t?o vào s? d?ng ADO.NET khai khác d? li?u Sql server s? d?ng visual studiio 2005.","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/kG3qahrmhOU/default.jpg","hqDefault":"https://i1.ytimg.com/vi/kG3qahrmhOU/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=kG3qahrmhOU&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=kG3qahrmhOU"},"content":{"5":"https://www.youtube.com/v/kG3qahrmhOU?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r2---sn-a5m7zu7l.c.youtube.com/CiULENy73wIaHAnlhOYaauptkBMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r2---sn-a5m7zu7l.c.youtube.com/CiULENy73wIaHAnlhOYaauptkBMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":2963,"viewCount":294,"favoriteCount":0,"commentCount":2,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHJ0vy_-UoOTFSW2Mt7EMF0Q","position":4,"author":"ntdanable","video":{"id":"YMZ5gYc9g3o","uploaded":"2012-12-27T12:25:02.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P3","description":"","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/YMZ5gYc9g3o/default.jpg","hqDefault":"https://i1.ytimg.com/vi/YMZ5gYc9g3o/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=YMZ5gYc9g3o&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=YMZ5gYc9g3o"},"content":{"5":"https://www.youtube.com/v/YMZ5gYc9g3o?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r4---sn-a5m7zu7s.c.youtube.com/CiULENy73wIaHAl6gz2HgXnGYBMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r4---sn-a5m7zu7s.c.youtube.com/CiULENy73wIaHAl6gz2HgXnGYBMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":1251,"viewCount":174,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHGDgBXE7TNsK2yc_9NIM4d4","position":5,"author":"ntdanable","video":{"id":"S778YynB308","uploaded":"2012-12-27T12:28:48.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P4","description":"","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/S778YynB308/default.jpg","hqDefault":"https://i1.ytimg.com/vi/S778YynB308/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=S778YynB308&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=S778YynB308"},"content":{"5":"https://www.youtube.com/v/S778YynB308?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r8---sn-a5m7zu76.c.youtube.com/CiULENy73wIaHAlP38EpY_y-SxMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r8---sn-a5m7zu76.c.youtube.com/CiULENy73wIaHAlP38EpY_y-SxMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":1536,"viewCount":207,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHKI3jap7XpsvUL45gGFZWo8","position":6,"author":"ntdanable","video":{"id":"XgNE9zkCjog","uploaded":"2012-12-27T12:35:59.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P6","description":"","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/XgNE9zkCjog/default.jpg","hqDefault":"https://i1.ytimg.com/vi/XgNE9zkCjog/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=XgNE9zkCjog&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=XgNE9zkCjog"},"content":{"5":"https://www.youtube.com/v/XgNE9zkCjog?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r2---sn-a5m7zu7k.c.youtube.com/CiULENy73wIaHAmIjgI590QDXhMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r2---sn-a5m7zu7k.c.youtube.com/CiULENy73wIaHAmIjgI590QDXhMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":1742,"viewCount":234,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHCw8uQHFuWESr_dm2jmzjPQ","position":7,"author":"ntdanable","video":{"id":"WSYD-XUr1a8","uploaded":"2012-12-27T12:33:21.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P5","description":"Vdeo hu?ng d?n t?o vào s? d?ng crystal report v?i C# s? d?ng visual studio 2005","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/WSYD-XUr1a8/default.jpg","hqDefault":"https://i1.ytimg.com/vi/WSYD-XUr1a8/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=WSYD-XUr1a8&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=WSYD-XUr1a8"},"content":{"5":"https://www.youtube.com/v/WSYD-XUr1a8?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r1---sn-a5m7zu7z.c.youtube.com/CiULENy73wIaHAmv1St1-QMmWRMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r1---sn-a5m7zu7z.c.youtube.com/CiULENy73wIaHAmv1St1-QMmWRMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":2559,"viewCount":305,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHALFxzLmar49wl_V7mHZt5Y","position":8,"author":"ntdanable","video":{"id":"6isPeiXcFx4","uploaded":"2012-12-28T09:56:35.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P7","description":"Vdeo hu?ng d?n t?o vào s? d?ng usercontrol và custom control v?i C# s? d?ng visual studiio 2005.","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/6isPeiXcFx4/default.jpg","hqDefault":"https://i1.ytimg.com/vi/6isPeiXcFx4/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=6isPeiXcFx4&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=6isPeiXcFx4"},"content":{"5":"https://www.youtube.com/v/6isPeiXcFx4?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r1---sn-a5m7zu7s.c.youtube.com/CiULENy73wIaHAkeF9wleg8r6hMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r1---sn-a5m7zu7s.c.youtube.com/CiULENy73wIaHAkeF9wleg8r6hMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":2587,"viewCount":152,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHHiP4d82uww8rGK6GINEnNo","position":9,"author":"ntdanable","video":{"id":"p4T5UmUvGD8","uploaded":"2012-12-28T09:51:38.000Z","updated":"2013-12-31T10:05:51.000Z","uploader":"ntdanable","category":"Education","title":"OnWFC P8","description":"On tap winform P8","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/p4T5UmUvGD8/default.jpg","hqDefault":"https://i1.ytimg.com/vi/p4T5UmUvGD8/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=p4T5UmUvGD8&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=p4T5UmUvGD8"},"content":{"5":"https://www.youtube.com/v/p4T5UmUvGD8?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r8---sn-a5m7zu7r.c.youtube.com/CiULENy73wIaHAk_GC9lUvmEpxMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r8---sn-a5m7zu7r.c.youtube.com/CiULENy73wIaHAk_GC9lUvmEpxMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":641,"rating":5.0,"likeCount":"2","ratingCount":2,"viewCount":144,"favoriteCount":0,"commentCount":0,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}},{"id":"PL7Dmo3mHp_ePvPxuTq_LDHGR96xIFPXq11HLesHWMmtc","position":10,"author":"ntdanable","video":{"id":"75kdIx-9E9E","uploaded":"2013-02-20T13:43:11.000Z","updated":"2014-04-24T18:55:14.000Z","uploader":"ntdanable","category":"Education","title":"Form Login - User Authentication with database visaul c#","description":"Form Login - User Authentication with user from sql server 2005 - c#","thumbnail":{"sqDefault":"https://i1.ytimg.com/vi/75kdIx-9E9E/default.jpg","hqDefault":"https://i1.ytimg.com/vi/75kdIx-9E9E/hqdefault.jpg"},"player":{"default":"https://www.youtube.com/watch?v=75kdIx-9E9E&feature=youtube_gdata_player","mobile":"https://m.youtube.com/details?v=75kdIx-9E9E"},"content":{"5":"https://www.youtube.com/v/75kdIx-9E9E?version=3&f=playlists&app=youtube_gdata","1":"rtsp://r8---sn-a5m7zu7r.c.youtube.com/CiULENy73wIaHAnRE70fIx2Z7xMYDSANFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp","6":"rtsp://r8---sn-a5m7zu7r.c.youtube.com/CiULENy73wIaHAnRE70fIx2Z7xMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp"},"duration":848,"rating":5.0,"likeCount":"2","ratingCount":2,"viewCount":2752,"favoriteCount":0,"commentCount":2,"accessControl":{"comment":"allowed","commentVote":"allowed","videoRespond":"moderated","rate":"allowed","embed":"allowed","list":"allowed","autoPlay":"allowed","syndicate":"allowed"}}}]}}

thông qua website này chúng ta có như sau


image


Đối với tôi nó giúp tôi đọc json bằng mắt nhanh hơn.

Saturday, April 26, 2014

Đăng ký Google Map API cho Android

Hiển thị Google Maps trong ứng dụng

Để có thể hiển thị được bản đồ của Google trong ứng dụng chúng ta cần phải thực hiện một số bước nhất định

Bước 1. Cài đặt Google play service

Bước 2. Đăng ký sử dụng Google map API version 2 với Google

Bước 3. Nhận Map API key cho Android do Google cung cấp

Bước 4. Gán key vào ứng dụng và cấp quyền truy cập cho ứng dụng

Cài đặt Google play service

- Đăng ký tài khoản Google (cái này là bắt buộc)

- Sau khi đã cập nhật Google Play Service Library, sử dụng eclipse mở project đã được lấy về qua thao tác cập nhật.

-File ->Import -> Existing Android code into workspace

-Tham chiếu tới thư mục Android SDK –> extras ->google_play_services  -> libproject và chọn google-play-services_lib

- Tạo Android project mới “MapDemo” và tham chiếu tới google-play-services_lib: Nhấn phải lên Android project vừa tạo chọn Properties à Android à nhấn Add và chọn project mới tham chiếu bên trên.

- Mở tập tin AndroidManifest.xml của MapDemo và bổ sung thông tin thư viện của Google Play. Bổ sung thẻ sau vào thẻ <Application>

1 <meta-data
2 android:name="com.google.android.gms.version"
3 android:value="@integer/google_play_services_version" />

Đăng ký sử dụng Google map API version 2 với Google

Google map là một dịch vụ được Google cung cấp va cho phép gọi từ xa. Google quản lý các ứng dụng/ hệ thống gởi yêu cầu sử dụng dịch vụ thông qua định danh hay ta gọi là Maps API key loại định danh cho dịch vụ bản đồ. Hình dung đơn giản như là giấy phép cấp cho ứng dụng để sử dụng dịch vụ bản đồ, mỗi khi ứng dụng gởi yêu cầu truy xuất bản đồ thì cũng trao giấp phép này cho server để xác định được phép hay không được sử dụng.

Ø Mở trình duyệt và di chuyển đến Google Console địa chỉ như sau https://code.google.com/apis/console/?noredirect để đăng ký. Ở gốc cao bên trái chúng sẽ thấy một một xổ có nhãn là API Project xổ và kéo xuống cuối chọn Create để tạo một projectimage

Nhấn Create project à kéo danh sách hiện ra và tìm đến

 image

Chọn vào “OFF” để sử dụng dịch vụ cho ứng dụng Android. Tiếp theo, chọn mục API Access ở menu gốc cao bên trái. Chọn vào nút “Create new Android key …”

image

Đến đây để tiếp tục chúng ta phải đọc thông tin về ứng dụng chúng ra đã tạo ra trên Android bước trên để cung cấp cho Google.

Mở eclipse à Window à Preferences. Copy chuỗi SHA1 fingerprint, dán vào vị trí hình , tiếp tục quay lại project MapDemo và xem tên package là gì sau đó thêm vào vào hình trên phần cách nhau dấu “;”.

image

Sau khi cung cấp chúng ta có như sau

image


Nhấn Create để tạo key cho phép sử dụng dịch vụ bản đồ từ ứng dụng của chúng ta.

image


Đến đây chúng ta đã có được key để giao tiếp với server của google sử dụng dịch vụ bản đồ.

Gán key vào ứng dụng và caaso quyền truy xuất

Mở lại android project à mở AdnroidManifest.xml và chèn thêm mã sau vào giữa thẻ Application


1 <meta-data
2 android:name="com.google.android.maps.v2.API_KEY"
3 android:value="AIzaSyC2-IEqBxmGT4iaABSVDVo-tEFF_sRY1K4"/>

Lưu tập tin lại. Việc đọc dữ liêu liệu Google Map cần phải được cấp một số quyền nhất định trên thiết bị. Tiếp tục cũng cấp mã XML sau vào AdnroidManifest.xml


1 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
2 <uses-permission android:name="android.permission.INTERNET" />
3 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
4 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
6 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
7

Tiếp tục bổ sung vào sau thể manifest để chỉ định phiên bản của MAP API


1 <uses-feature
2 android:glEsVersion="0x00020000"
3 android:required="true"/>

Thiết kế một FragementActivity đơn giản để test bản đồ

Thiết kế layout đơn giản sau


1 <?xml version="1.0" encoding="utf-8"?>
2 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
3 android:id="@+id/map"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:name="com.google.android.gms.maps.SupportMapFragment"/>

Mở tập tin MainActivity.java và tham chiếu giao diện cho layout này.

Chạy ứng dụng chúng ta sẽ có giao diện như sau

image

Thư viện C# cho phép nghe sự kiện bàn phím và chuột

 

http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

 

http://code.google.com/p/klog-sharp/source/browse/trunk/Keylogger/UserActivityHook.cs?r=2

 

Khá hay

Friday, April 25, 2014

Web dự báo thời tiết kết quả XML/JSON

Một dịch vụ công cộng dự báo thời tiết khá chi tiết, một kênh tham khảo hay.

http://api.openweathermap.org/data/2.5/forecast?lat=10.0333&lon=105.78333

Kết quả trả về dưới dạng JSON

Nếu muốn XML thì theo địa chỉ bên dưới

http://api.openweathermap.org/data/2.5/forecast?q=can+tho,vn&mode=xml

Các bạn thử phân tích XML xem sao

Thư viện java phân tích JSON

1 // chuy?n chu?i JSON thành ??i t??ng ?? x? lý
2 JSONObject reader = new JSONObject(jsonString);
3 // tham chi?u t?i c?m sys (xem c?u trúc bên trên)
4 JSONObject sys = reader.getJSONObject("sys");
5 // l?y thu?c tính country c?a ??i t??ng sys
6 country.setText(sys.getString("country"));
7 // tham chi?u t?i ?o?n main
8 JSONObject main = reader.getJSONObject("main");
9 // ??c giá tr? ?? ?m
10 humidity.setText("?? ?m: "+ main.getString("humidity") + "%");
11 // hi?n th? toàn b? lên TextViev d??i cùng
12 all.setText(jsonString);
13


Cũng có thể lấy mảng các đối tượng



1 // chuy?n chu?i JSON thành ??i t??ng ?? x? lý
2 JSONObject reader = new JSONObject(jsonString);
3 JSONArray listAll = reader.getJSONArray("list");
4 for (int i = 0; i < listAll.length(); i++) {
5 tv.append(listAll.getJSONObject(i).getString("dt_txt")
6 + ": "+ listAll.getJSONObject(i).getJSONObject("main")
7 .getString("humidity") + "%\n");
8

Translate