- Các thao tác cơ bản 3
1.3.5 GWT-Phonegap một wrapper
GWT-Phonegap là một wrapper cho phonegap javascript API, nó sử dụng GWT để có thể kết nối và chạy trong các browser của thiết bị. GWT cung cấp một cơ chế gọi là JavaScript Native Interface(JSNI) cho phép GWT gói toàn bộ thƣ viện Javascript để ngƣời phát triển có thể lập trình bằng java không phải lo lắng các hàm chức năng javascript đƣợc gọi bên dƣới nhƣ thế nào. Bên cạnh đó GWT còn cung cấp GWT- Phonegap để gói toàn bộ thƣ viện phonegap và vì thế ngƣời lập trình không cần biết các hàm chức năng bên dƣới của phonegap đƣợc gọi ra nhƣ thế nào.
Các bước tạo một ứng dụng di động dùng GWT và PhoneGap
Để có đƣợc một ứng dụng kết hợp giữa GWT và Phonegap bạn cần phải thực hiện các bƣớc:
- Dùng GWT-Phonegap trong project GWT của bạn, viết code xử lý và biên dịch ra các file javascript.
- Tạo project phonegap cho từng platform, copy các file output sau quá trình GWT biên dịch sang thƣ mục www của project phonegap đó.
Để có thể dùng đƣợc GWT-Phonegap trong project GWT bạn cần cài đặt nó.
Cách cài đặt GWT-Phonegap
1. Download phiên bản mới nhất của gwt-phonegap.jar, import nó vào thƣ mục war/WEB-INF/lib và thêm nó vào trong classpath bằng cách nhấn chuột phải vào file jar chọn build path sau đó chọn Add to build path.
( download phiên bản mới nhất tại:
http://mvnrepository.com/artifact/com.googlecode.gwtphonegap/gwtphoneg ap )
Học viên: Lê Thị Hoàng Anh _ Lớp 13B CNTT1 46
<inherits name='com.googlecode.gwtphonegap.PhoneGap' /> <define-property name
="gwt.logging.popupHandler" values="ENABLED, DISABLED" />
3. Vì gwt-phonegap chỉ hỗ trợ trên IOS và Android do vậy bạn có thể thông báo cho GWT chỉ biên dịch cho safari. Thông báo này sẽ làm giảm thời gian biên dịch của bạn.
<set-property name="user.agent" value="safari" />
Cách dùng gwt-phonegap trong GWT code
Trong GWT project chúng ta cần có một đối tƣợng phonegap bằng dòng code sau:
final PhoneGap phoneGap = GWT.create(PhoneGap.class);
Bƣớc tiếp theo chúng ta đăng ký các callback sau bên trong phonegap framework: - PhoneGapAvailableHandler: Callback này xảy ra khi mọi thứ đều chạy ổn
và phonegap đã đƣợc khởi tạo hoàn toàn. Trƣờng hợp này có nghĩa là gọi callback thành công.
- PhoneGapTimeoutHandler: Callback này xảy ra khi phonegap không đƣợc khởi tạo trong thời gian hạn định đƣợc đƣa ra, có thể là lỗi khi khởi tạo phonegap framework. Trƣờng hợp này có nghĩa là gọi callback thất bại.
phoneGap.addHandler(new PhoneGapAvailableHandler() { @Override
public void onPhoneGapAvailable(PhoneGapAvailableEvent event) { ClientUtils.log("Phonegap is available");
startApp();
} });
phoneGap.addHandler(new PhoneGapTimeoutHandler() { @Override
public void onPhoneGapTimeout(PhoneGapTimeoutEvent event) { }
});
Học viên: Lê Thị Hoàng Anh _ Lớp 13B CNTT1 47
phoneGap.initializePhoneGap();
Chúng ta có thể tham khảo ví dụ code với các phonegap API bằng cách vào link sau: https://code.google.com/p/gwt-phonegap/wiki/Features , muốn tham khảo code xử lý với phần nào chúng ta nhấn chuột vào từng tính năng đó.
Ví dụ làm việc với AcceleroMeter:
AccelerationOptions options = new AccelerationOptions();
options.setFrequency(50);
AccelerometerWatcher watcher =
phonegap.getAccelerometer().watchAcceleration(options, new
AccelerationCallback() {
@Override
public void onSuccess(Acceleration acceleration) {
// X - Axis acceleration.getX(); // Y - Axis acceleration.getY(); // Z - Axis acceleration.getZ(); //time acceleration.getTimeStamp(); } @Override
public void onFailure() {}
Học viên: Lê Thị Hoàng Anh _ Lớp 13B CNTT1 48
CHƢƠNG 2. MÔ HÌNH XÂY DỰNG ỨNG DỤNG