Lập trình mobile - Phần 5

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn: DHDL
Người gửi: Nguyễn Bùi Minh Tâm
Ngày gửi: 00h:30' 20-11-2009
Dung lượng: 925.5 KB
Số lượt tải: 80
Nguồn: DHDL
Người gửi: Nguyễn Bùi Minh Tâm
Ngày gửi: 00h:30' 20-11-2009
Dung lượng: 925.5 KB
Số lượt tải: 80
Số lượt thích:
0 người
LẬP TRÌNH MOBILE
Hệ thống quản lý bản ghi (RMS)
11/20/2009
1
Võ Phương Bình – ITFAC - DLU
Hệ thống quản lý bản ghi (RMS)
Giới thiệu
Ghi và đọc
Duyệt bản ghi
Sắp xếp
Tìm kiếm
11/20/2009
Võ Phương Bình – ITFAC - DLU
2
Giới thiệu
RMS - Record Management System:
Là cơ chế để các ứng dụng MIDlet lưu trữ, truy xuất và thao tác dữ liệu trên thiết bị di động.
Dữ liệu sẽ được lưu trữ bền trên thiết bị ngay cả khi ứng dụng không còn thực thi.
Lớp bản ghi: RecordStore
javax.microedition.rms. RecordStore;
11/20/2009
Võ Phương Bình – ITFAC - DLU
3
Ghi và đọc
Khởi tạo:
RecordStore rs = RecordStore.openRecordStore(String filename, boolean createnew)
Ghi:
rs.addRecord(byte[] rec, int start, int length);
Đọc:
rs.getRecord(int index, byte[] recData, int offset);
11/20/2009
Võ Phương Bình – ITFAC - DLU
4
Ghi và đọc (2)
Các phương thức:
String[] listRecordStores();
int getNumRecords();
int getRecordSize(int index);
void closeRecordStore();
void deleteRecordStore(String filename);
11/20/2009
Võ Phương Bình – ITFAC - DLU
5
Ghi và đọc (3)
Sử dụng Stream:
ByteArrayOutputStream strmBytes;
DataOutputStream strmDataType = new DataOutputStream(strmBytes);
Ghi:
strmDataType.writeUTF(String sData);
strmDataType.writeBoolean(boolean bData);
strmDataType.writeInt(int iData);
Đọc:
strmDataType.readUTF();
strmDataType.readBoolean();
strmDataType.readInt();
11/20/2009
Võ Phương Bình – ITFAC - DLU
6
Duyệt bản ghi
Sử dụng bộ đếm bản ghi Enumerator.
Cho pho phép di chuyển đến trước và sau các bản ghi trong vùng bản ghi.
Điểm mạnh: Sắp xếp, Tìm kiếm.
Ví dụ:
RecordEnumeration re = rs.enumerateRecords(Filter, Compator, false);
while (re.hasNextElement())
{
String str = new String(re.nextRecord());
System.out.println(str);
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
7
Sắp xếp
Thực thi giao diện RecordComparator.
Định nghĩa lại hàm so sánh compare:
class Comparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1), str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0)
return RecordComparator.EQUIVALENT;
else if (result < 0)
return RecordComparator.PRECEDES;
else
return RecordComparator.FOLLOWS;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
8
Tìm kiếm
Ví dụ:
11/20/2009
Võ Phương Bình – ITFAC - DLU
9
Tìm kiếm (2)
Thực thi giao diện RecordFilter
class SearchFilter implements RecordFilter
{
private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1)
return true;
return false;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
10
Tìm kiếm (3)
Sử dụng lớp SearchFilter :
private void searchRecordStore()
{
if (rs.getNumRecords() > 0)
{
SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re = rs.enumerateRecords(search, null, false);
if (re.numRecords() > 0)
siMatch.setText(new String(re.nextRecord()));
re.destroy();
}
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
11
Hệ thống quản lý bản ghi (RMS)
11/20/2009
1
Võ Phương Bình – ITFAC - DLU
Hệ thống quản lý bản ghi (RMS)
Giới thiệu
Ghi và đọc
Duyệt bản ghi
Sắp xếp
Tìm kiếm
11/20/2009
Võ Phương Bình – ITFAC - DLU
2
Giới thiệu
RMS - Record Management System:
Là cơ chế để các ứng dụng MIDlet lưu trữ, truy xuất và thao tác dữ liệu trên thiết bị di động.
Dữ liệu sẽ được lưu trữ bền trên thiết bị ngay cả khi ứng dụng không còn thực thi.
Lớp bản ghi: RecordStore
javax.microedition.rms. RecordStore;
11/20/2009
Võ Phương Bình – ITFAC - DLU
3
Ghi và đọc
Khởi tạo:
RecordStore rs = RecordStore.openRecordStore(String filename, boolean createnew)
Ghi:
rs.addRecord(byte[] rec, int start, int length);
Đọc:
rs.getRecord(int index, byte[] recData, int offset);
11/20/2009
Võ Phương Bình – ITFAC - DLU
4
Ghi và đọc (2)
Các phương thức:
String[] listRecordStores();
int getNumRecords();
int getRecordSize(int index);
void closeRecordStore();
void deleteRecordStore(String filename);
11/20/2009
Võ Phương Bình – ITFAC - DLU
5
Ghi và đọc (3)
Sử dụng Stream:
ByteArrayOutputStream strmBytes;
DataOutputStream strmDataType = new DataOutputStream(strmBytes);
Ghi:
strmDataType.writeUTF(String sData);
strmDataType.writeBoolean(boolean bData);
strmDataType.writeInt(int iData);
Đọc:
strmDataType.readUTF();
strmDataType.readBoolean();
strmDataType.readInt();
11/20/2009
Võ Phương Bình – ITFAC - DLU
6
Duyệt bản ghi
Sử dụng bộ đếm bản ghi Enumerator.
Cho pho phép di chuyển đến trước và sau các bản ghi trong vùng bản ghi.
Điểm mạnh: Sắp xếp, Tìm kiếm.
Ví dụ:
RecordEnumeration re = rs.enumerateRecords(Filter, Compator, false);
while (re.hasNextElement())
{
String str = new String(re.nextRecord());
System.out.println(str);
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
7
Sắp xếp
Thực thi giao diện RecordComparator.
Định nghĩa lại hàm so sánh compare:
class Comparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1), str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0)
return RecordComparator.EQUIVALENT;
else if (result < 0)
return RecordComparator.PRECEDES;
else
return RecordComparator.FOLLOWS;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
8
Tìm kiếm
Ví dụ:
11/20/2009
Võ Phương Bình – ITFAC - DLU
9
Tìm kiếm (2)
Thực thi giao diện RecordFilter
class SearchFilter implements RecordFilter
{
private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1)
return true;
return false;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
10
Tìm kiếm (3)
Sử dụng lớp SearchFilter :
private void searchRecordStore()
{
if (rs.getNumRecords() > 0)
{
SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re = rs.enumerateRecords(search, null, false);
if (re.numRecords() > 0)
siMatch.setText(new String(re.nextRecord()));
re.destroy();
}
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
11
 







Các ý kiến mới nhất