2.8.Ghi âm audio và video

Việc ghi âm audio và video được thực hiện thông qua RecordControl. Trên S60, việc ghi âm audio và video được hỗ trợ từ  2nd Edition trở lên, S40 hỗ trợ từ 3nd Edition, FP1 trở lên. Bạn có thể sử dụng thuộc tính dưới đây để kiểm tra:

supports.audio.capture – ghi âm audio.
supports.video.capture – ghi âm video.

Những thuộc tính này trả về true nếu hỗ trợ ghi âm.

Khi tạo một Player để nắm bắt audio hay video, hoặc nắm bắt cụ thể, locator URL phải được sử dụng như là một tham số trong phương thức createPlayer() của lớp Manager. Đoạn code dưới đây biểu diễn việc tạo một thể hiện Player để nắm bắt audio:

Player p = Manager.createPlayer(“capture://audio”);

Việc ghi lại hình ảnh hay video sử dụng locator sau:

S40 platform:

capture://image (for photo capture)

capture://video (for video recording)

S60 platform:

capture://video (for video recording and image capture)

capture://devcam0 (for video recording and image capture)

capture://devcam1 (second camera, if the device has two cameras)

Locator đẻ nắm bắt audio:

capture://audio

Bạn cũng có thể xác định các loại phương tiện ghi âm chính xác đến URL locator. Các tham số được hỗ trợ khác nhau giữa các nền tảng và các thiết bị. Lưu ý rằng SDK có thể không hỗ trợ tính năng chụp ở tất cả, vì vậy việc thử nghiệm nên được thực hiện với các thiết bị di động thực sự. Để biết thêm chi tiết về ghi âm, kiểm tra các đặc điểm kỹ thuật Mobile Media API.

2.9.Time Bases

Trong S60, tất cả các Player đều hỗ trợ phương thức setTimeBase(TimeBase newTimeBase), miễn là newTimeBase được lấy từ một Player khác. Chúng không hỗ trợ phương thức setTimeBase() trên chính MIDlet thực thi giao diện TimeBase. Trong S40, chỉ có hệ thống TimeBases được hỗ trợ.

2.10.Chụp ảnh

Để chụp ảnh, đầu tiên yêu cầu bạn phải tạo ra Player cho hành động chụp(capture). Bây giờ, bạn có thể realize Player và nhận một VideoControl từ thể hiện của Player. Trong ứng dụng, bạn cần chỉ định locator mà nó được hỗ trợ trong thiết bị hay platform.

VideoControl có một phương thức getSnapshot(), cho phép bạn tạo một snapshot của video mà nó hiển thị. Điều này đặc biệt hữu dụng khi nó được hiển thị video trực tiếp từ camera của thiết bị, và nó cho phép bạn chụp ảnh. Ví dụ dưới đây mô tả cách chụp ảnh sử dụng những thiết lập đặc biệt.

byte[] pngImageData = videoControl.getSnapshot(null);

Bạn có thể chỉ định những định dạng khác nếu thiết bị hỗ trợ chúng, và có thể đưa vào chiều rộng và chiều cao của bức hình.

videoControl.getSnapshot(“encoding=bmp”);  // BMP, default size

videoControl.getSnapshot(“width=80&height=60”); // default encoding, size 80×60

videoControl.getSnapshot(“encoding=bmp&width=80&height=60”); // BMP, 80×60

Nếu các giá trị được chỉ định chiều rộng và chiều cao, cả hai trong số chúng phải được xác định, không chỉ là chiều rộng hoặc chiều cao. Trong trường hợp này, hình ảnh được thu nhỏ lại theo yêu cầu chiều rộng và chiều cao. Nếu tỉ lệ yêu cầu(đó là 4:3) không phù hợp với kích thước mặc định(trong hầu hết thiết bị là 160×120) thì kết quả trả về có thể bị méo, hoặc trong các thiết bị S40, nếu chiều rộng và chiều cao không phù hợp với kích thước được hỗ trợ, kết quả gần đúng nhất sẽ được thay thế. Kích thước cực đại cũng có thể được bắt phụ thuộc vào bộ nhớ heap sẵn có. Thuộc tính hệ thống video.snapshot.encodings có chứa một danh sách encoding video cho thiết bị. Các kiểu image hỗ trợ có thể là: encoding=png, encoding=bmp, encoding=jpeg, và encoding=gif. Định dạng JPEG là định dạng gọn nhẹ nhất. Việc sử dụng định dạng gọn nhẹ làm giảm sử dụng bộ nhớ, và do đó nó được khuyên dùng trong nhiều trường hợp.

2.11.StopTimeControl

StopTimeControl cho phép một người sử dụng thiết lập thời gian mà Player sẽ ngừng. Nhận StopTimeControl của player và thiết lập thời gian dừng mong muốn trong micro giây với phương thức setStopTime() của StopTimeControl.

// Get the player whose stop time should be set…

Player player = …;

// Get the StopTimeControl of the Player

StopTimeControl control = (StopTimeControl) player.getControl(“StopTimeControl”);

if (control!=null)

{

// Set stop time to one second

control.setStopTime(1000000);

}

2.12.VolumeControl

Âm lượng của Player có thể được thiết lập thông qua giao diện VolumeControl. Một khi Player đã được tạo ra và ở trạng thái REALIZED, nhận giao diện VolumeControl bằng cách gọi phương thức getCotrol() và thiết lập level âm lượng mong muốn từ 0 đến 100 thông qua phương thức setLevel() của VolumeControl.

// Get the player whose volume level should be changed…

Player player = …;

// Get the VolumeControl of Player

VolumeControl control = (VolumeControl) player.getControl(“VolumeControl”);

if (control!=null)

{

// Set new volume level to 50% of maximum

control.setLevel(50);

}

2.13.Bảo mật

Nhiều người có thể xem xét việc capture media như là một nguy cơ bảo mật tiềm năng. Các MIDlet MIDP 2.0 tồn tại trong một tên miền bảo mật không đáng tin cậy, trong đó MIDlet đã bị giới hạn truy cập bảo mật. Bằng việc ký các MIDlet với một giấy chứng nhận đăng ký mã số hợp lệ, các MIDlet có thể thu được cấp độ truy cập tên miền bảo mật đáng tin cậy.

Các phương thứ sau đây là các điểm truy cập MMAPI mà platform kiểm tra xem việc nhắc nhở bảo mật có cần thiết hay không. Những nhắc nhở này được hiển thị lên cho người dùng để họ chấp nhận hay từ chối hoạt động đó. Bảng dưới đây cho thấy các điểm truy cập API mà nó kiểm tra việc truy cập được thực hiện.

Lớp Phương thức
javax.microedition.media.control.RecordControl setRecordLocation(java.lang.String locator)
javax.microedition.media.control.VideoControl getSnapshot(java.lang.String imageType)
javax.microedition.media.control.RecordControl setRecordStream(java.io.OutputStream tream)

Lưu ý: Những nội dung khác trong MMAPI có thể được sử dụng để play những nội dung được bảo vệ, như nội dung lưu trữ mạng(network-stored). Trong trường hợp đó, các điều khoản bảo mật cũng có thể sử dụng.

MIDlet đã đăng ký có thể yêu cầu quyền truy cập cao hơn cho các hành động cụ thể bằng cách lấy chúng trong thuộc tính  MIDlet-Permissions từ Descriptor của ứng dụng(thường nằm trong file JAD của ứng dụng).

Tên cho phép việc ghi âm audio/video là:

javax.microedition.media.control.RecordControl

Tên cho phép việc chụp ảnh là:

javax.microedition.media.control.VideoControl.getSnapshot

Các bài liên quan:
Sử dụng Multimedia API trong Nokia – Phần 1
Sử dụng Multimedia API trong Nokia – Phần 2
Sử dụng Multimedia API trong Nokia – Phần cuối