Thứ Tư, 20 tháng 1, 2010

10 dự đoán về Google Android trong năm 2010


Với sự ra đời của Motorola Droid và gần đây là Google Nexus One, đó là bằng chứng cho một tương lai đầy hấp dẫn của Google Android năm 2010. Nền Android đã có thâm niên 2 năm và mới đây đã chuyển sang phiên bản 2.1.

Đặc biệt với sự ra đời của Nexus One là điện thoại với phần cứng, phần mềm tốt hớn và gia tăng những phần mềm tiện ích cho người dùng.

Sau đây là những tiên đoán về những gì sẽ diễn ra với Google Android trong năm 2010

1. Nhiều thiết bị điện thoại cho Google Android

Hiển nhiên như chúng ta đã biết ngoài HTC, SamSung, LG, Motorola đã ra đời những sản phầm với hệ điều hành Android. Trong năm nay, sẽ có nhiều hãng khác sẽ sử dụng nền Android như IBM,...

HTC đầu tiên cho ra đời G1 và G2, và không thể quên gần đây họ cho ra đời Hero và Droid Eris. Nhìn chung HTC đã cho thấy họ là một tập đoàn lớn trong thiết kế smart phone. Mặc dù tồn tại những lỗi với G1 Dream nhưng họ cũng đút kết những kinh nghiệm và những thư viện khổng lồ để phát triển dòng sản phẩm của chính họ trên Android Platform. Theo tôi trong năm tới HTC có thể sẽ khai thác đội ngũ lập trình viên ở nước thứ 3 như Việt Nam chúng ta. Motorola cũng là một đối thủ đáng cạnh tranh với HTC với Droid (mặc dù vẫn còn những hạn chế).

Tại thời điểm này, tương lại của thị trường di động Android sẽ phát triển hơn nhiều. Theo Wikipedia's hiện tại danh sách phát triển điện thoại Android là những nhà sản xuất vô danh nhưng chúng ta sẽ thấy nhưng thông báo của những hãng lớn về Android trong một vài tháng tới.

Và gần đây chúng ta cũng nghe đến Sony Ericsson's XPERIA X10, với 1Ghz bộ xử lý, 8MP camera và mà hình 4 inch. Tất cả là tốt hơn với Droid, và nó chắc rằng dấu hiệu sáng tạo đang đến với platfrom.

T-Mobile được chúng ta biết đến với G2 với bàn phím được trang bị hơn Cliq. Spint đã có ở Hero. Sự kiện AT&T với sự lớn mạnh của thiết bị cầm tay Dell.

2. Phát triển Ứng dụng bùng nổ, và vượt qua số ứng dụng iPhone

Thật khó để thấy thị trường Android sẽ có nhiều ứng dụng trong năm 2010. Những gì đã đưa tôi khẳng định họ có tiềm năng lớn mạnh như vậy? Chúng ta sẽ thấy rằng tương lai về nghiệp dư và độc lập phát triển cho Android, nhưng tôi cũng thấy nhiều release từ những công ty phần mềm lớn và nhiều trao đổi của các ứng dụng iPhone phổ biến.

Droid và Nexus One là minh chứng rõ ràng với nhiều nhà phát triển có tên tuổi đã đi vào khai thác lĩnh vực Android platform.

3. Android sẽ trình làng nhiều thiết bị khác

Một thuận lợi của Android là nó không giới hạn trong cellphone. Google đã tạo ra một hệ điều hành lightweight mà nó có thể vận hành tốt trên các thiết bị khác. Chúng ta đã thấy Anroid trên Archos 5 portable media, cũng như Barnes and Noble Nook ebook Reader. Trong năm 2010 chúng ta sẽ thấy những netbooks (Acer đã có kết hoạch) và tôi sẽ không ngạc nhiên khi thấy trên internet những thiết bị đó.

4. Nhiều uyển chuyển và ổn định trên Android OS

Lần nữa, một vấn đề dường như rõ ràng, một điểm đáng lưu ý: 2010 sẽ là năm Android trường thành từ những phần khởi đầu không mấy khả quan. Android 2.1 đã ra đời trông tốt hơn nhiều so với những phiên bản trước nhưng cũng còn một tí không hoàn thiện. Chúng ta có thể trông chờ vào tương lai. Khi OS trưởng thành, chúng ta sẽ thấy những ứng dụng phức tạp được phát triển, bao gồm những hỗ trợ cho game 3D.

5. Phần cứng Android sẽ hoàn thiện nhanh hơn iPhone

Một diện mạo của cuộc chiến giữa Android với iPhone đó là Android sẽ không hụt hơi với chu khi làm mới hằng năm của Apple's. Các nhà máy sản xuất thiệt bị cầm tay có thể cho ra đời thiết bị bất cứ khi nào họ thích, điều đó có nghĩa là họ có thể tạo ra mỗi sản phần trong 1 năm. Sony XPERIA X10 ra đời và đành bại phần cứng Droid, và ngay khi nó chưa đưa ra ngày ra đời chính thức, chúng ta biết rằng nó ra đời vài tháng trước khi Droid phát hành

Chúng ta có thể thấy 6 tháng từ khi iPhone 3GS ra đời, và Droid đã hỗ trợ camera có megapixel cao hơn, màn hình lớn hơn và quản lý bàn phím thực và dày hơn của iPhone.

6. Nhiều dịch vụ hỗ trợ hơn từ Google

Định vị của Google Map hỗ trợ đầy đủ trong việc chạy trên Droid hoàn toàn an toàn. Google biết họ có ứng dụng hấp dẫn trong tay họ và có nhiều thuận lợi trong việc bán ra thị trường của Droid. Ứng dụng yêu cầu phải viết trên Android 2.0 và hiện tại Droid là điện thoại duy nhất trên thị trường với đặt tính đó (thời điểm chưa ra đời Nexus One)

Chúng ta sẽ chắn chắn thấy rằng Google Maps Navigation sẽ có trên thiết bị Android 2.0, và Apple sẽ kết thục việc mang đó đến iPhone.

Điều quan trọng ở đây rằng Google Maps Nav được ưu tiên cho Android trước, và sẽ trải qua vài tháng mới xuất hiện trên iPhone


7. Không do dự hỗ trợ multi-touch

Google cần phải loại bỏ sự cẩn thận trong bước đi, lớn lên một số cojone và kéo theo Palm khi nó đến với multi-touch hỗ trợ trên Android. Multi-touch quả thực đã được tích hợp trong Android 2.0, nhưng ngay cả khi với Droid vẫn còn hạn chế trong việc dùng 2 ngón tay để zoom cho web browsing, Google Máp và ứng dụng khác. Mặc hạn chế này tồn tại trên những phần mềm có sẵn trong Droid và đối với ứng dụng khác thì hoạt động tốt.

Khi cho thiết bị không phải là Android 2.0, nó hiện tại nâng cấp firmware ở nhà máy để hỗ trợ multi-touch. HTC đã làm điều này với HTC Hero và Eris - đó là châm biếm có ý nghĩa bởi vì Eris là được bán rẻ hơn, ít đặc tính hơn Droid.

8. Thị trường Android thịnh hành

Google là người đưa ra Android và những nhà sản xuất, sẽ không yên lặng như những gì trong năm qua. Thật là hợp lý với một lượng lớn các thiết bị Android ra đời năm 2010

9. Trông chờ sự chuyển đổi từ Blackberry và Windows Mobile

Nhiều suy nghĩ về những hạn chế lớn của iPhone đối với Google's là nỗ lực mã nguồn mở, nhưng chúng ta không thể quên rằng một thị phần đáng kể của người dùng smartphone đang là điện thoại Blackberry và Windows Mobile

Cả RIM và Microsof đang lao vào cuộc chiến để giữ khách hàng với cuộc cách mạng của smartphone hiện đại. Blackberry Storm 2 quả thực là tốt hơn tổ tiên trước, nhưng nó không là làm người dùng nhảy tràn bộ nhớ, cho phép một mình chuyển đổi phone. Phiên bản Windows Mobile 6.5 đã có những tiếng hạn chế lớn, và chúng ta sẽ không thấy sự thụt lùi trong phiên bản 7.0 ra đời trong năm 2010.

Với những hạn chế trên, khách hàng sẽ dần chuyển sang dùng Android phone.

10. Nhiều khách hàng ở bở mặt chung

HTC Android vởi giao diện Sense UI trên Hero và Eris, đó sẽ không là lần cuối cùng họ làm thế.

Chúng ta hoài nghi rằng sẽ thấy nhiều nhà sản xuất đặt Anroid cong duy nhất trên sản phẩm của họ trong năm 2010, nếu được ra đời từ đám đông. Với nhiều điện thoại ra đời, những nhà sản xuất có sự cách tân về phần cứng và tạo ra những giao diện đẹp đó là cách họ thu hút khách hàng.

Như đã quan tâm ở trên Sony Ericsson XPERIA X10.

Cuối cùng

Với một vài tiên đón trên phần lớn sẽ diễn ra, trong khi những thứ khác vừa là hi vọng. Những gì diễn ra trong năm 2010 là những gì chúng ta đang quan tâm đến thiết bị di động. Microsoft cần đảm bảo ra đời Windows Mobile 7, và RIM cần xem lại những gì trên hành tinh họ đang làm...

Android đang là sự hấp dẫn nhất của tất cả.



Tham khảo (pingdom.com)

Thứ Ba, 12 tháng 1, 2010

Giới thiệu GLSurfaceView

GLSurfaceView là một lớp API mới trong Android 1.5. GLSurfaceView làm các ứng dụng OpenGL ES dễ dàng để viết bởi vì:
  • Cung cấp code dính để kết nối OpenGL ES với hệ thống View
  • Cung cấp code dính để làm OPenGL ES làm việc với chu kỳ sống Activity
  • Làm dễ dàng trong việc lựa chon định dạng khung đệm pixel tương thích
  • Cung công cụ debugging dễ dùng để lần theo OpenGL ES API gọi và kiểm tra lỗi.
    GLSurfaceView là một nền tốt cho việc xây dựng ứng dụng mà có dùng OpenGL ES. Game hành động 2D hoặc 3D sẽ là một trường hợp đáng quan tâm nhất, và hình ảnh ứng dụng sẽ sống động hơn giốp như Google Maps StreetView.

Ứng dụng đơn giản nhất của GLSurfaceView

Đây là nguồn code cho ứng dụng đơn giản nhất của OpenGL ES:

java:

  1. package com.example.android.apis.graphics;

  2. import javax.microedition.khronos.egl.EGLConfig;
  3. import javax.microedition.khronos.opengles.GL10;

  4. import android.app.Activity;
  5. import android.opengl.GLSurfaceView;
  6. import android.os.Bundle;

  7. public class ClearActivity extends Activity {
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. mGLView = new GLSurfaceView(this);
  12. mGLView.setRenderer(new ClearRenderer());
  13. setContentView(mGLView);
  14. }

  15. @Override
  16. protected void onPause() {
  17. super.onPause();
  18. mGLView.onPause();
  19. }

  20. @Override
  21. protected void onResume() {
  22. super.onResume();
  23. mGLView.onResume();
  24. }

  25. private GLSurfaceView mGLView;
  26. }

  27. class ClearRenderer implements GLSurfaceView.Renderer {
  28. public void onSurfaceCreated(GL10 gl, EGLConfig config) {
  29. // Do nothing special.
  30. }

  31. public void onSurfaceChanged(GL10 gl, int w, int h) {
  32. gl.glViewport(0, 0, w, h);
  33. }

  34. public void onDrawFrame(GL10 gl) {
  35. gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
  36. }
  37. }




Trong chương trình này không làm nhiều: Nó xóa màn hình thành màu đen trên mỗi frame. Nhưng nó hoàn toàn là một ứng dụng OpenGL, một cách chính xác nó được hiện thực trong chu kỳ code Android Activity. Nó sẽ ngừng (pause) đưa ra khi Activity được dừng, và trở lại khi Activity được trở lại (resumed). Bạn có thể dùng ứng dụng ứng dụng này như cơ bản cho chương trình không tương tác. Chỉ cần thêm OpenGL gọi đến phương thức
java:
  1. ClearRenderer.onDrawFrame
.

Cần nhớ rằng
java:
interface có ba phương thức:

Phương thức
java:
được gọi để bắt đầu rendering, và bất cứ khi nào OpenGL ES đang vẽ ngữ cảnh (drawing context) phải khởi tạo lại. (Việc vẽ ngữ cảnh là thường mất và khở tạo lại khi Activity paused và re sumed).
java:
là một nơi tốt để tạo ra tài nguyên OpenGL giống kết cấu.

Phương thức
java:
được gọi khi bở mặt thay đổi kích thước. Nó là một nơi tốt để thiết lập Viewport OpenGL của bạn. Bạn có thể cũng thiết lập camera ở đây, nếu nó là cố định camera thì sẽ không di chuyển xung quanh khung cảnh.

Phương thức
java:
được gọi ở mỗi frame, và có trách nhiệm cho việc vẽ quang cảnh. Bạn sẽ bắt đầu gọi
java:
để xóa framebuffer, được theo ở OpenGL ES khác gọi để vẽ quang cảnh hiện tại

User Input như thế nào?

Nếu bạn muốn tương tác với ứng dụng giống như game, bạn sẽ đặc trưng đến lớp con GLSurfaceView, bởi vì nó là một cách dễ dàng để đạt được các sự kiện vào. Đây là một ví dụ dài hơn để các bạn thấy nó làm như thế nào:

java:

  1. package com.google.android.ClearTest;

  2. import javax.microedition.khronos.egl.EGLConfig;
  3. import javax.microedition.khronos.opengles.GL10;

  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.opengl.GLSurfaceView;
  7. import android.os.Bundle;
  8. import android.view.MotionEvent;

  9. public class ClearActivity extends Activity {
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. mGLView = new ClearGLSurfaceView(this);
  14. setContentView(mGLView);
  15. }

  16. @Override
  17. protected void onPause() {
  18. super.onPause();
  19. mGLView.onPause();
  20. }

  21. @Override
  22. protected void onResume() {
  23. super.onResume();
  24. mGLView.onResume();
  25. }

  26. private GLSurfaceView mGLView;
  27. }

  28. class ClearGLSurfaceView extends GLSurfaceView {
  29. public ClearGLSurfaceView(Context context) {
  30. super(context);
  31. mRenderer = new ClearRenderer();
  32. setRenderer(mRenderer);
  33. }

  34. public boolean onTouchEvent(final MotionEvent event) {
  35. queueEvent(new Runnable(){
  36. public void run() {
  37. mRenderer.setColor(event.getX() / getWidth(),
  38. event.getY() / getHeight(), 1.0f);
  39. }});
  40. return true;
  41. }

  42. ClearRenderer mRenderer;
  43. }

  44. class ClearRenderer implements GLSurfaceView.Renderer {
  45. public void onSurfaceCreated(GL10 gl, EGLConfig config) {
  46. // Do nothing special.
  47. }

  48. public void onSurfaceChanged(GL10 gl, int w, int h) {
  49. gl.glViewport(0, 0, w, h);
  50. }

  51. public void onDrawFrame(GL10 gl) {
  52. gl.glClearColor(mRed, mGreen, mBlue, 1.0f);
  53. gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
  54. }

  55. public void setColor(float r, float g, float b) {
  56. mRed = r;
  57. mGreen = g;
  58. mBlue = b;
  59. }

  60. private float mRed;
  61. private float mGreen;
  62. private float mBlue;
  63. }




Ứng dụng xóa màn hình mỗi frame. Chương trình này sẽ xóa màu sắc dựa trên tọa độ của sự kiện touch. Chú ý cách dùng của queueEvent() trong ClearGLSurfaceView.onTouchEvetn(). Phương thức queueEvent() là được dùng an toàn giữa giao tiếp UI thread và rendering thread. Nếu bạn thích bạn có thể dùng một vài kỹ thuật giao tiếp khác của java, như là phương thức đồng bộ trên lớp Render. Nhưng hàng đợi sự kiện là thường là cách đơn giản nhất.

Ứng dụng khác của GLSurfaceView
Bạn có thấy việc xóa màn hình có vất vả không? Bạn có thể tìm nhiều ví dụ hập dẫn trong API Demos của SDK. Tất cả ví dụ OpengGL ES đã được chuyển sang dùng GLSurfaceView view.
  • GLSurfaceView - xoay tam giác
  • Kube - Demo một khối puzzle
  • Translucent GLSurfaceView - làm thể nào để hiện đồ họa 3D trên nền mờ
  • Textured Triangle
  • Sprite Text -
  • Touch Rotate

Lựa chọn một Surface

GLSurfaceView giúp bạn chọn loại surface để render. Các loại thiết bị Android khác nhau sẽ hỗ trợ loại surface khác nhau, sẽ không cùng chung tập hợp. Điều này là một vấn đề nghiêm ngặc trong việc chọn surface tốt nhất cho mỗi thiết bị. Về mặc định GLSurfaceView cố gắng lựa chọn surface mà nó gần nhất có thể để một 16-bit RGB frame buffer với một 16-bit buffer sâu. Dựa trên ứng dụng bạn có thể thay đổi. Ví dụ, trong Translslucent GLSurfaceView cần một kênh Alpha thứ tự để render dữ liệu mờ. GLSurfaceView cung cấp một phương thức setGLSurfaceChooser() để cho người phát triển điều khiển toàn bộ surface được chọn:
Quote:
Trích từ Android blog
setEGLConfigChooser(boolean needDepth)
Choose a config that's closest to R5G6B5 with or without a 16-bit framebuffer
setEGLConfigChooser(int redSize, int greenSize,int blueSize, int alphaSize,int depthSize, int stencilSize)
Choose the config with the fewest number of bits per pixel that has at least as many bits-per-channel as specified in the constructor.
setEGLConfigChooser(EGLConfigChooser configChooser)
Allow total control over choosing a configuration. You pass in your own implementation of EGLConfigChooser, which gets to inspect the device's capabilities and choose a configuration.
Tiếp tục với Rendering so với Render khi bẩn
Phần lớn ứng dụng 3D, như game or sự giả lập, là liên tục với sự sống động. Nhưng một vài ứng dụng 3D là có nhiều hành động lặp lại. Cho tất cả các loại của ứng dụng, mặc định GLSurfaceView tiếp tục vẽ lại màn hình đó là sự lãng phí thời gian. Nếu bạn đang phát triển một ứng dụng có các hoạt động lặp lại phương thức GLSurfaceView.setRenderMode(RENDERMODE_WHEN_DIRTY), tắt sự tiếp tục sóng động. Khi đó bạn gọi GLSurfaceView.requestRender() khi bạn muốn re-render.

Giúp đỡ với việc debugging

GLSurfaceView có nắm giữ một đặc tính built-in cho việc debugging ứng dụng OpenGL ES: phương thức GLSurfaceView.setDebugFlags() có thể được dùng để logging và/hoặc kiểm tra lỗi trên OpenGL ES gọi. Gọi phương thức này trong việc xây dựng GLSurfaceView's của bạn trước khi gọi setRender:
java:

  1. public ClearGLSurfaceView(Context context) {
  2. super(context);
  3. // Turn on error-checking and logging
  4. setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS);
  5. mRenderer = new ClearRenderer();
  6. setRenderer(mRenderer);
  7. }




Nguồn Android blog

Giới thiệu Android NDK 1.5_r1

Android NDK 1.5_r1 đã ra đời lâu nay mình sẽ dịch lại bài viết từ blogspot của "Android developer" về những đặc điểm chung của Android NDK 1.5_r1.

Như các bạn đã biết, ứng dụng Android chạy trên máy ảo Dalvik. NDK cho phép những nhà phát triển hiện thực những phần ứng dụng của họ bằng việc sử dụng ngôn ngữ native-code như C và C++. Điều năng mang đến nhiều tiện lợi cho các ứng dụng.

NDK cung cấp:
  • Tập hợp các công cụ và file build dùng để sinh thư viện code từ nguồn C và C++.
  • Cách để nhúng thư viện native trong ứng dụng files (.apks) để có thể triển khai trên thiết bị Android.
  • Tập hợp hệ thống native header và thư viện mà sẽ được hỗ trợ cho các phiên bản tương lại của Android, đang bắt đầu từ tài liệu 1.5, ví dụ và bài học.

Phiên bản này của NDK hỗ trợ tập lệnh máy ARMv5TE và cung cấp các header cho:
  • libc, thư viện C chuẩn
  • libm, thư viện chuẩn math
  • JNI interface
  • libz, thư viện cho việc nén file Zlib
  • liblog, dùng để gửi thông điệp logcat đến kernel.

Luôn luôn nhở rằng sử dụng NDK sẽ không phải cho toàn bộ ứng dụng Android. Là một nhà phát triển (developer), bạn sẽ cần phải cân bằng các lợi ích để hạn chế những nhược điểm.

Với những câu hỏi liên quan đến NDK, bạn có thể tham gia vào diễn đàn Android NDK (English).

(Nguồn android-developers.blogspot.com)


Thứ Hai, 4 tháng 1, 2010

Một số website hữu ích

Tra cứu thuật ngữ tin học:
Thư viện phần mềm
Thư viện code