Cấp độ API: 12
Đối với nhà phát triển, nền tảng Android 3.1
(HONEYCOMB_MR1
) có sẵn dưới dạng
thành phần có thể tải xuống cho SDK Android. Nền tảng có thể tải xuống bao gồm
thư viện Android và hình ảnh hệ thống, cũng như một tập hợp giao diện trình mô phỏng và
khác. Nền tảng có thể tải xuống không chứa thư viện bên ngoài.
Đối với các nhà phát triển, nền tảng Android 3.1 được cung cấp dưới dạng thành phần có thể tải xuống cho SDK Android. Nền tảng có thể tải xuống bao gồm thư viện Android và hình ảnh hệ thống, cũng như một tập hợp giao diện trình mô phỏng và khác. Để bắt đầu phát triển hoặc thử nghiệm trên Android 3.1, sử dụng Trình quản lý SDK Android để tải nền tảng xuống SDK của bạn.
Tổng quan về API
Các phần dưới đây cung cấp thông tin tổng quan về kỹ thuật của những tính năng mới dành cho nhà phát triển trong Android 3.1, bao gồm các tính năng mới và thay đổi trong API khung kể từ phiên bản trước đó.
API USB
Android 3.1 giới thiệu các API mới mạnh mẽ cho tích hợp các thiết bị ngoại vi được kết nối với các ứng dụng chạy trên nền tảng. Các API này dựa trên ngăn xếp USB (Universal Serial Bus) và các dịch vụ được tích hợp vào nền tảng, bao gồm tính năng hỗ trợ cho cả thiết bị và máy chủ USB tương tác. Bằng cách sử dụng API, nhà phát triển có thể tạo ra các ứng dụng có thể khám phá, giao tiếp và quản lý nhiều loại thiết bị được kết nối qua USB.
Ngăn xếp và API phân biệt hai loại phần cứng USB cơ bản, dựa trên thiết bị chạy Android đang hoạt động như máy chủ lưu trữ hay phần cứng bên ngoài đang đóng vai trò là người tổ chức:
- Thiết bị USB là một phần cứng được kết nối phụ thuộc vào Thiết bị chạy Android làm máy chủ lưu trữ. Ví dụ: hầu hết thiết bị đầu vào, chuột, và cần điều khiển là các thiết bị USB, cũng như nhiều máy ảnh, bộ chia, v.v.
- Phụ kiện USB là một thiết bị phần cứng được kết nối có cổng USB bộ điều khiển của máy chủ, cung cấp năng lượng và được thiết kế để giao tiếp với Các thiết bị chạy Android qua USB, Nhiều thiết bị ngoại vi có thể kết nối dưới dạng phụ kiện, từ bộ điều khiển robot cho đến thiết bị âm nhạc, xe đạp tập thể dục, và nhiều lợi ích khác.
Đối với cả hai loại — thiết bị USB và phụ kiện USB — API USB của nền tảng hỗ trợ khám phá bằng thông báo truyền tin có ý định khi được đính kèm hoặc tách rời, cũng như các giao diện tiêu chuẩn, điểm cuối và chế độ chuyển (điều khiển, hàng loạt và gián đoạn).
API USB có trong gói android.hardware.usb
. Chiến lược phát hành đĩa đơn
lớp trung tâm là UsbManager
, cung cấp
các phương thức trợ giúp để xác định và giao tiếp với
cả thiết bị USB và phụ kiện USB. Các ứng dụng có thể lấy một thực thể của
UsbManager
rồi truy vấn danh sách tệp đính kèm
các thiết bị hoặc phụ kiện, sau đó giao tiếp với hoặc quản lý chúng.
UsbManager
cũng khai báo các thao tác theo ý định mà
thông báo của hệ thống, để thông báo khi một phụ kiện hoặc thiết bị USB đã được cắm hoặc
đã tách.
Các lớp khác bao gồm:
UsbDevice
, một lớp đại diện cho bên ngoài phần cứng được kết nối dưới dạng thiết bị USB (với thiết bị chạy Android hoạt động như máy chủ lưu trữ).UsbAccessory
, đại diện cho phần cứng bên ngoài được kết nối dưới dạng USB host (với thiết bị chạy Android hoạt động như một USB thiết bị).UsbInterface
vàUsbEndpoint
, cung cấp quyền truy cập vào USB tiêu chuẩn giao diện và điểm cuối cho một thiết bị.UsbDeviceConnection
vàUsbRequest
, để gửi và nhận dữ liệu và kiểm soát tin nhắn đến hoặc từ thiết bị USB, một cách đồng bộ và không đồng bộ.UsbConstants
, cung cấp các hằng số cho khai báo loại điểm cuối, lớp thiết bị, v.v.
Lưu ý rằng mặc dù ngăn xếp USB được tích hợp vào nền tảng, nhưng việc hỗ trợ thực tế đối với máy chủ USB và chế độ mở phụ kiện trên các thiết bị cụ thể được xác định bởi nhà sản xuất của họ. Cụ thể, chế độ máy chủ dựa vào USB thích hợp phần cứng của tay điều khiển trong thiết bị chạy Android.
Ngoài ra, nhà phát triển có thể yêu cầu lọc trên Google Play, sao cho các ứng dụng của họ không được cung cấp cho người dùng có thiết bị không cung cấp hỗ trợ USB thích hợp. Để yêu cầu lọc, hãy thêm một hoặc cả hai phần tử bên dưới vào tệp kê khai ứng dụng, nếu phù hợp:
- Nếu ứng dụng chỉ hiển thị với các thiết bị hỗ trợ USB
chế độ máy chủ lưu trữ (kết nối của thiết bị USB), hãy khai báo phần tử này:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- Nếu ứng dụng chỉ hiển thị với các thiết bị hỗ trợ USB
phụ kiện (kết nối của máy chủ USB), hãy khai báo phần tử này:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
Để biết thông tin đầy đủ về cách phát triển các ứng dụng tương tác với phụ kiện USB, vui lòng xem tài liệu dành cho nhà phát triển.
Để xem các ứng dụng mẫu sử dụng API lưu trữ USB, hãy xem nội dung Kiểm tra ADB và Tên lửa Trình chạy
API MTP/PTP
Android 3.1 ra mắt API MTP mới cho phép các ứng dụng tương tác trực tiếp với camera được kết nối và các thiết bị PTP khác. API mới giúp người dùng để nhận thông báo khi thiết bị được gắn và tháo ra, quản lý các tệp và dung lượng lưu trữ trên các thiết bị đó, cũng như chuyển các tệp và siêu dữ liệu sang và từ họ. API MTP triển khai tập hợp con PTP (Giao thức truyền hình ảnh) về bản đặc tả MTP (Giao thức truyền nội dung nghe nhìn).
MTP API có trong gói android.mtp
và cung cấp
các lớp này:
MtpDevice
đóng gói một thiết bị MTP được kết nối qua bus máy chủ USB. Một ứng dụng có thể tạo thực thể cho một đối tượng của loại này rồi sử dụng các phương thức để nhận thông tin về thiết bị và các đối tượng được lưu trữ trên đó, cũng như mở kết nối và chuyển dữ liệu. Có thể kể đến một số phương thức như sau:getObjectHandles()
trả về danh sách tên người dùng cho mọi đối tượng trên thiết bị khớp với định dạng và cấp độ gốc đã chỉ định. Để nhận thông tin về một đối tượng, ứng dụng có thể truyền tên người dùng đếngetObjectInfo()
.importFile()
cho phép ứng dụng sao chép dữ liệu của đối tượng vào một tệp ở bên ngoài bộ nhớ. Cuộc gọi này có thể bị chặn trong một khoảng thời gian tuỳ ý tuỳ thuộc vào dữ liệu và tốc độ của thiết bị. Do đó, bạn nên lấy chuỗi.open()
cho phép ứng dụng mở thiết bị MTP/PTP được kết nối.- Trả lại hàng với mức phí
getThumbnail()
hình thu nhỏ của đối tượng dưới dạng một mảng byte.
MtpStorageInfo
có thông tin về bộ nhớ trên thiết bị MTP, tương ứng với Tập dữ liệu StorageInfo được mô tả trong phần 5.2.2 của quy cách MTP. Các phương thức trong lớp này cho phép ứng dụng nhận chuỗi mô tả của thiết bị lưu trữ, dung lượng trống, dung lượng lưu trữ tối đa, mã bộ nhớ và mã nhận dạng ổ đĩa.MtpDeviceInfo
có thông tin về một thiết bị MTP tương ứng với Tập dữ liệu DeviceInfo được mô tả trong phần 5.1.1 của MTP đặc điểm kỹ thuật. Các phương thức trong lớp này cho phép ứng dụng lấy thông tin của thiết bị nhà sản xuất, kiểu máy, số sê-ri và phiên bản.MtpObjectInfo
chứa thông tin về một đối tượng được lưu trữ trên thiết bị MTP, tương ứng với Tập dữ liệu ObjectInfo được mô tả trong phần 5.3.1 của quy cách MTP. Các phương thức trong lớp này cho phép ứng dụng lấy kích thước đối tượng, định dạng dữ liệu, loại liên kết, ngày tạo và hình thu nhỏ của bạn.MtpConstants
cung cấp các hằng số để khai báo tệp MTP mã định dạng, loại liên kết và trạng thái bảo vệ.
Hỗ trợ các thiết bị đầu vào mới và sự kiện chuyển động
Android 3.1 mở rộng hệ thống con đầu vào để hỗ trợ các thiết bị đầu vào mới và các loại sự kiện chuyển động, trên tất cả các khung hiển thị và cửa sổ. Nhà phát triển có thể xây dựng ứng dụng dựa trên những khả năng này cho phép người dùng tương tác với ứng dụng của họ bằng chuột, bi xoay, cần điều khiển, bàn chơi và các thiết bị khác, ngoài bàn phím và màn hình cảm ứng.
Để xử lý phương thức nhập bằng chuột, con lăn chuột và bi xoay, nền tảng này hỗ trợ hai hành động sự kiện chuyển động mới:
ACTION_SCROLL
, mô tả con trỏ vị trí nơi có chuyển động cuộn không chạm, chẳng hạn như từ con lăn chuột, đã diễn ra. Trong MotionEvent, giá trị của trụcAXIS_HSCROLL
vàAXIS_VSCROLL
sẽ chỉ định thao tác cuộn tương đối chuyển động.ACTION_HOVER_MOVE
, báo cáo vấn đề hiện tại vị trí của chuột khi không có nút nào được nhấn, cũng như khi nút trung gian điểm kể từ sự kiệnHOVER_MOVE
gần đây nhất. Di chuột vào và thoát thông báo chưa được hỗ trợ.
Để hỗ trợ cần điều khiển và bàn chơi, lớp InputDevice
bao gồm các nguồn thiết bị đầu vào mới sau:
SOURCE_CLASS_JOYSTICK
– nguồn có các trục của cần điều khiển.SOURCE_CLASS_BUTTON
– nguồn thiết bị có các nút hoặc phím.SOURCE_GAMEPAD
– thiết bị nguồn có các nút trên tay điều khiển trò chơi nhưKEYCODE_BUTTON_A
hoặcKEYCODE_BUTTON_B
. Ngụ ýSOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
– thiết bị nguồn có các trục cần điều khiển. Hàm ý NGUỒN_CLASS_JOYSTICK.
Để mô tả sự kiện chuyển động từ các nguồn mới này, cũng như sự kiện từ chuột
và bi xoay, nền tảng này hiện xác định các mã trục trên MotionEvent
, tương tự như cách xác định mã phím trên KeyEvent
. Mã trục mới cho cần điều khiển
và tay điều khiển trò chơi bao gồm
AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
và nhiều người khác.
Các trục MotionEvent
hiện có được biểu thị bằng AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
và AXIS_ORIENTATION
.
Ngoài ra, MotionEvent
xác định một số thuộc tính chung
một số mã trục được dùng khi khung không biết cách liên kết
một trục cụ thể. Các thiết bị cụ thể có thể sử dụng mã trục chung để truyền
vào các ứng dụng. Để xem danh sách đầy đủ các trục và mục đích sử dụng chúng
phiên dịch, hãy xem tài liệu về lớp MotionEvent
.
Nền tảng này cung cấp hàng loạt sự kiện chuyển động cho các ứng dụng, do đó, một
sự kiện có thể chứa một vị trí hiện tại và nhiều sự kiện được gọi là biến động lịch sử.
Ứng dụng phải dùng getHistorySize()
để tải
số lượng mẫu trước đây, sau đó truy xuất và xử lý tất cả
mẫu theo thứ tự bằng cách sử dụng getHistoricalAxisValue()
. Sau đó, ứng dụng sẽ xử lý dữ liệu hiện tại
mẫu bằng getAxisValue()
.
Một số trục có thể được truy xuất bằng các phương thức truy cập đặc biệt. Ví dụ:
thay vì gọi getAxisValue()
, các ứng dụng có thể gọi getX()
. Các trục có trình truy cập tích hợp sẵn bao gồm AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
và AXIS_ORIENTATION
.
Mỗi thiết bị đầu vào có một mã nhận dạng duy nhất do hệ thống chỉ định và cũng có thể cung cấp
từ nhiều nguồn. Khi thiết bị cung cấp nhiều nguồn, nhiều nguồn
có thể cung cấp dữ liệu trục bằng cách sử dụng cùng một trục. Ví dụ: sự kiện chạm sắp diễn ra
từ nguồn cảm ứng, sử dụng trục X cho dữ liệu vị trí trên màn hình, trong khi cần điều khiển
sự kiện đến từ nguồn của cần điều khiển sẽ sử dụng trục X làm vị trí cần điều khiển
thay thế. Vì lý do này, điều quan trọng là các ứng dụng phải diễn giải trục
giá trị theo nguồn gốc của giá trị đó. Khi xử lý một chuyển động
sự kiện, các ứng dụng sẽ sử dụng các phương thức trên InputDevice
để xác định các trục mà một thiết bị hoặc nguồn hỗ trợ. Cụ thể,
các ứng dụng đều có thể sử dụng getMotionRanges()
để truy vấn tất cả các trục của một thiết bị hoặc tất cả các trục của một thiết bị cụ thể
nguồn của thiết bị. Trong cả hai trường hợp, thông tin về phạm vi cho các trục được trả về trong
đối tượng InputDevice.MotionRange
chỉ định nguồn cho
từng giá trị trục.
Cuối cùng, vì các sự kiện chuyển động từ cần điều khiển, bàn chơi, chuột và
bi xoay không phải là sự kiện chạm, nền tảng thêm một phương thức gọi lại mới cho
chuyển chúng đến View
dưới dạng "chung" sự kiện chuyển động.
Cụ thể, công cụ này báo cáo các sự kiện chuyển động không chạm cho
View
thông qua lệnh gọi đến onGenericMotionEvent()
thay vì đến onTouchEvent()
.
Nền tảng này gửi các sự kiện chuyển động chung theo cách khác nhau, tuỳ thuộc vào
lớp nguồn sự kiện. SOURCE_CLASS_POINTER
sự kiện
chuyển đến View
bên dưới con trỏ, tương tự như cách chạm
các sự kiện hoạt động. Tất cả những người khác sẽ chuyển đến View
hiện được đặt tiêu điểm.
Ví dụ: điều này có nghĩa là View
phải lấy tiêu điểm để
nhận các sự kiện cần điều khiển. Nếu cần, ứng dụng có thể xử lý những sự kiện này tại
cấp Hoạt động hoặc Hộp thoại bằng cách triển khai onGenericMotionEvent()
ở đó.
Để xem một ứng dụng mẫu sử dụng chuyển động của cần điều khiển các sự kiện, hãy xem GameControllerInput và GameView.
API RTP
Android 3.1 hiển thị API cho RTP (Giao thức truyền tải theo thời gian thực) được tích hợp sẵn mà các ứng dụng có thể dùng để quản lý dữ liệu theo yêu cầu hoặc dữ liệu tương tác phát trực tuyến. Cụ thể, các ứng dụng cung cấp VOIP, kỹ thuật đẩy để nói chuyện, hội nghị truyền hình, và tính năng phát trực tuyến âm thanh có thể dùng API để khởi tạo các phiên hoạt động và truyền hoặc nhận qua bất kỳ mạng nào có sẵn.
API RTP có trong gói android.net.rtp
. Hạng
bao gồm:
RtpStream
, lớp cơ sở của luồng gửi và nhận các gói mạng có tải trọng truyền thông qua RTP.AudioStream
, một lớp con củaRtpStream
mang tải trọng âm thanh qua RTP.AudioGroup
, một trung tâm âm thanh cục bộ để quản lý và đang trộn loa, micrô vàAudioStream
của thiết bị.AudioCodec
, chứa một tập hợp các bộ mã hoá và giải mã mà bạn xác định cho mộtAudioStream
.
Để hỗ trợ hội nghị truyền thanh và các trường hợp sử dụng tương tự, một ứng dụng sẽ tạo thực thể hai lớp làm điểm cuối cho luồng:
AudioStream
chỉ định một điểm cuối từ xa và bao gồm của ánh xạ mạng vàAudioCodec
đã định cấu hình.AudioGroup
đại diện cho điểm cuối cục bộ của một hoặc nhiềuAudioStream
hơn. Danh sách kết hợpAudioGroup
tất cả cácAudioStream
và tương tác với thiết bị (không bắt buộc) và micrô cùng lúc.
Cách sử dụng đơn giản nhất liên quan đến một điểm cuối từ xa và điểm cuối cục bộ.
Đối với những trường hợp sử dụng phức tạp hơn, vui lòng tham khảo các giới hạn được mô tả cho
AudioGroup
.
Để sử dụng RTP API, ứng dụng phải yêu cầu người dùng cấp quyền bằng cách
khai báo <uses-permission
android:name="android.permission.INTERNET">
trong tệp kê khai. Để sử dụng micrô của thiết bị, bạn cũng cần có quyền <uses-permission
android:name="android.permission.RECORD_AUDIO">
.
Tiện ích ứng dụng có thể thay đổi kích thước
Kể từ Android 3.1, nhà phát triển có thể tạo tiện ích trên màn hình chính có thể đổi kích thước — theo chiều ngang, chiều dọc hoặc trên cả hai trục. Người dùng chạm và giữ tiện ích con để hiển thị ô điều khiển thay đổi kích thước, sau đó kéo ngang và/hoặc dọc ô điều khiển để thay đổi kích thước trên lưới bố cục.
Nhà phát triển có thể đổi kích thước bất kỳ tiện ích nào trên Màn hình chính bằng cách xác định
Thuộc tính resizeMode
trong siêu dữ liệu AppWidgetProviderInfo
của tiện ích. Giá trị cho thuộc tính
Thuộc tính resizeMode
bao gồm "ngang", "dọc" và "không có".
Để khai báo một tiện ích là có thể đổi kích thước theo chiều ngang và chiều dọc, hãy cung cấp giá trị
"ngang|dọc".
Ví dụ:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" > </appwidget-provider>
Để biết thêm thông tin về các tiện ích trên Màn hình chính, hãy xem phần Tiện ích ứng dụng tài liệu.
Khung ảnh động
- Lớp ViewPropertyAnimator mới
- Lớp
ViewPropertyAnimator
mới cung cấp thuận tiện để nhà phát triển tạo ảnh động cho các thuộc tính chọn lọc trên đối tượngView
. Lớp tự động và tối ưu hoá ảnh động của các thuộc tính, đồng thời giúp bạn dễ dàng quản lý nhiều ảnh động đồng thời trên đối tượngView
.Việc sử dụng
ViewPropertyAnimator
rất đơn giản. Cách tạo ảnh động cho các thuộc tính choView
, hãy gọianimate()
đến tạo đối tượngViewPropertyAnimator
choView
đó. Sử dụng trênViewPropertyAnimator
để chỉ định thuộc tính nào cần tạo ảnh động và cách tạo ảnh động. Ví dụ: để làm mờView
thành trong suốt, gọialpha(0);
. Đối tượngViewPropertyAnimator
xử lý thông tin chi tiết về việc định cấu hình lớpAnimator
cơ bản và khởi động lớp đó, sau đó kết xuất ảnh động.
- Lớp
- Màu nền ảnh động
getBackgroundColor()
mới và Các phương thứcsetBackgroundColor(int)
cho phép bạn tải/đặt màu nền phía sau ảnh động, cho ảnh động cửa sổ . Hiện tại, nền phải là màu đen, với bất kỳ mức độ alpha mong muốn nào.
- Lấy phân số động từ
ViewAnimator
- Một
getAnimatedFraction()
mới phương thức cho phép bạn nhận tỷ lệ ảnh động hiện tại — tỷ lệ đã trôi qua/nội suy phân đoạn được dùng trong lần cập nhật khung hình gần đây nhất – từValueAnimator
.
- Một
khung giao diện người dùng
- Buộc kết xuất một lớp
- Phương thức
buildLayer()
mới cho phép ứng dụng buộc tạo lớp của Chế độ xem và Chế độ xem kết xuất vào lớp đó ngay lập tức. Ví dụ: một ứng dụng có thể dùng phương thức này để kết xuất một Thành phần hiển thị vào trước khi bắt đầu ảnh động. Nếu Khung hiển thị phức tạp, hãy kết xuất nó thành trước khi bắt đầu ảnh động sẽ tránh bỏ qua khung hình.
- Phương thức
- Khoảng cách camera
- Ứng dụng có thể dùng một phương thức mới
setCameraDistance(float)
để đặt khoảng cách từ máy ảnh vào một Chế độ xem. Điều này giúp ứng dụng kiểm soát tốt hơn việc chuyển đổi 3D Chế độ xem, chẳng hạn như xoay.
- Ứng dụng có thể dùng một phương thức mới
- Tải chế độ xem lịch từ DatePicker
- Một phương thức
getCalendarView()
mới cho phép bạn nhậnCalendarView
từDatePicker
thực thể.
- Một phương thức
- Nhận lệnh gọi lại khi khung hiển thị được tách
View.OnAttachStateChangeListener
mới cho phép bạn nhận sẽ gọi lại khi Khung hiển thị được đính kèm hoặc tách khỏi cửa sổ. Sử dụngaddOnAttachStateChangeListener()
để thêm một trình nghe vàaddOnAttachStateChangeListener()
để xoá trình nghe đó.
- Trình nghe breadcrumb Fragment, chữ ký onInflate() mới
- Một phương thức mới,
setOnBreadCrumbClickListener()
, một nội dung hấp dẫn các ứng dụng chặn nhấp chuột vào đoạn đường dẫn (fragment-breadcrumb) và thực hiện bất kỳ hành động nào cần thiết trước khi chuyển đến mục ngăn xếp lui hoặc mảnh được nhấp vào. - Trong lớp
Fragment
,onInflate(attrs, savedInstanceState)
không được dùng nữa. Thay vào đó, vui lòng sử dụngonInflate(activity, attrs, savedInstanceState)
.
- Một phương thức mới,
- Hiện kết quả tìm kiếm trong thẻ mới
- Khoá dữ liệu
EXTRA_NEW_SEARCH
cho ý địnhACTION_WEB_SEARCH
cho phép bạn mở một lượt tìm kiếm trong thẻ trình duyệt mới thay vì trong thẻ trình duyệt hiện có.
- Khoá dữ liệu
- Con trỏ văn bản có thể vẽ
- Giờ đây, bạn có thể chỉ định một đối tượng có thể vẽ để dùng làm con trỏ văn bản bằng cách sử dụng
thuộc tính tài nguyên
textCursorDrawable
.
- Giờ đây, bạn có thể chỉ định một đối tượng có thể vẽ để dùng làm con trỏ văn bản bằng cách sử dụng
thuộc tính tài nguyên
- Chế độ cài đặt thành phần con đang hiển thị trong khung hiển thị từ xa
- Một phương thức tiện lợi mới
setDisplayedChild(viewId, childIndex)
có sẵn trong các lớp conRemoteViews
để cho phép bạn thiết lập thành phần hiển thị con hiển thị trongViewAnimator
và Các lớp conAdapterViewAnimator
nhưAdapterViewFlipper
,StackView
,ViewFlipper
vàViewSwitcher
.
- Một phương thức tiện lợi mới
- Khoá chung cho tay điều khiển trò chơi và các thiết bị đầu vào khác
KeyEvent
thêm một loạt các mã phím chung cho phù hợp với các nút trên tay điều khiển trò chơi. Lớp học này cũng thêmisGamepadButton(int)
và một vài ứng dụng khác các phương thức trợ giúp để làm việc với mã phím.
Đồ hoạ
- Trình trợ giúp để quản lý bitmap
setHasAlpha(boolean)
cho phép một ứng dụng cho biết rằng tất cả các pixel trong Bitmap được biết là mờ (false) hoặc một số pixel có thể chứa giá trị alpha không mờ (true). Lưu ý: đối với một số cấu hình (chẳng hạn như vì RGB_565), nên lệnh gọi này sẽ bị bỏ qua vì không hỗ trợ alpha trên mỗi pixel giá trị. Đây là gợi ý vẽ, như trong một số trường hợp, bitmap đã biết trường hợp vẽ mờ có thể mất trường hợp vẽ nhanh hơn trường hợp có thể có trường hợp không mờ giá trị alpha trên mỗi pixel.getByteCount()
nhận kích thước của Bitmap trong byte.getGenerationId()
cho phép một ứng dụng tìm xác định xem Bitmap đã được sửa đổi hay chưa, chẳng hạn như để lưu vào bộ nhớ đệm.sameAs(android.graphics.Bitmap)
xác định liệu một Bitmap cụ thể có khác với Bitmap hiện tại hay không về kích thước, hoặc dữ liệu pixel.
- Đặt vị trí và chế độ xoay của máy ảnh
Camera
thêm hai phương thức mới làrotate()
vàsetLocation()
cho quyền kiểm soát vị trí của camera để chuyển đổi 3D.
Mạng
- Khoá Wi-Fi hiệu suất cao
- Một khoá Wi-Fi hiệu suất cao mới giúp các ứng dụng duy trì
kết nối Wi-Fi hiệu suất cao ngay cả khi màn hình thiết bị đang tắt.
Các ứng dụng phát trực tuyến nhạc, video hoặc giọng nói trong thời gian dài có thể bị
khoá Wi-Fi hiệu suất cao để đảm bảo hiệu suất phát trực tuyến ngay cả khi màn hình
đã bị tắt. Vì sử dụng nhiều năng lượng hơn, các ứng dụng phải nhận được
Wi-Fi hiệu suất cao khi cần một thiết bị hoạt động trong thời gian dài
kết nối.
Để tạo khoá hiệu suất cao, hãy truyền
WIFI_MODE_FULL_HIGH_PERF
dưới dạng chế độ khoá trong một gọi đếncreateWifiLock()
.
- Một khoá Wi-Fi hiệu suất cao mới giúp các ứng dụng duy trì
kết nối Wi-Fi hiệu suất cao ngay cả khi màn hình thiết bị đang tắt.
Các ứng dụng phát trực tuyến nhạc, video hoặc giọng nói trong thời gian dài có thể bị
khoá Wi-Fi hiệu suất cao để đảm bảo hiệu suất phát trực tuyến ngay cả khi màn hình
đã bị tắt. Vì sử dụng nhiều năng lượng hơn, các ứng dụng phải nhận được
Wi-Fi hiệu suất cao khi cần một thiết bị hoạt động trong thời gian dài
kết nối.
- Thống kê lưu lượng truy cập khác
- Các ứng dụng hiện có thể truy cập số liệu thống kê về nhiều loại sử dụng mạng hơn
bằng các phương thức mới trong
TrafficStats
. Ứng dụng có thể sử dụng để thu thập số liệu thống kê UDP, số gói, byte truyền/nhận TCP và cho một UID nhất định.
- Các ứng dụng hiện có thể truy cập số liệu thống kê về nhiều loại sử dụng mạng hơn
bằng các phương thức mới trong
- Tên người dùng xác thực SIP
- Giờ đây, các ứng dụng có thể nhận và đặt tên người dùng xác thực SIP cho một hồ sơ
đang sử dụng
các phương thức mới
getAuthUserName()
vàsetAuthUserName()
.
- Giờ đây, các ứng dụng có thể nhận và đặt tên người dùng xác thực SIP cho một hồ sơ
đang sử dụng
các phương thức mới
Trình quản lý Tải xuống
- Xử lý các lượt tải xuống đã hoàn tất
- Các ứng dụng giờ đây có thể bắt đầu tải xuống để chỉ thông báo cho người dùng trên
hoàn thành. Để bắt đầu hình thức tải xuống này, các ứng dụng phải vượt qua
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
trong phương thứcsetNotificationVisibility()
của đối tượng yêu cầu. - Phương thức mới
addCompletedDownload()
cho phép ứng dụng thêm một tệp vào tải xuống cơ sở dữ liệu để có thể được quản lý bằng ứng dụng Tải xuống.
- Các ứng dụng giờ đây có thể bắt đầu tải xuống để chỉ thông báo cho người dùng trên
hoàn thành. Để bắt đầu hình thức tải xuống này, các ứng dụng phải vượt qua
- Hiện các tệp đã tải xuống được sắp xếp theo kích thước
- Ứng dụng có thể khởi động ứng dụng Nội dung tải xuống ở chế độ sắp xếp theo kích thước theo
thêm
INTENT_EXTRAS_SORT_BY_SIZE
bổ sung mới vào ý địnhACTION_VIEW_DOWNLOADS
.
- Ứng dụng có thể khởi động ứng dụng Nội dung tải xuống ở chế độ sắp xếp theo kích thước theo
thêm
khung IME
- Lấy khoá giá trị bổ sung của phương thức nhập
InputMethodSubtype
sẽ thêm phương thứccontainsExtraValueKey()
để kiểm tra xem chuỗi ExtraValue có được lưu trữ hay không cho loại phụ và phương thứcgetExtraValueOf()
để trích xuất một giá trị khoá cụ thể từ bản đồ băm ExtraValue.
Nội dung nghe nhìn
- Các định dạng mới cho âm thanh phát trực tuyến
- Khung nội dung đa phương tiện bổ sung tính năng hỗ trợ tích hợp sẵn cho nội dung ADTS AAC thô, đối với cải thiện âm thanh phát trực tuyến, cũng như hỗ trợ âm thanh FLAC, để có chất lượng cao nhất Nội dung âm thanh nén (không mất dữ liệu). Xem Định dạng nội dung nghe nhìn được hỗ trợ để biết thêm thông tin.
Đã dừng bật các chế độ điều khiển khởi chạy ứng dụng
Bắt đầu từ Android 3.1, trình quản lý gói của hệ thống theo dõi các ứng dụng ở trạng thái dừng và cung cấp phương tiện kiểm soát khởi chạy từ các quy trình nền và ứng dụng khác.
Lưu ý rằng trạng thái dừng của một ứng dụng không giống với trạng thái của một Hoạt động trạng thái đã dừng. Hệ thống sẽ quản lý riêng biệt 2 trạng thái dừng đó.
Nền tảng này xác định 2 cờ ý định mới cho phép người gửi chỉ định liệu Ý định có được phép kích hoạt các thành phần trong đã dừng hay không .
FLAG_INCLUDE_STOPPED_PACKAGES
– Bao gồm bộ lọc ý định của các ứng dụng đã dừng vào danh sách các mục tiêu tiềm năng để giải quyết.FLAG_EXCLUDE_STOPPED_PACKAGES
– Loại trừ bộ lọc ý định của các ứng dụng đã dừng khỏi danh sách các ứng dụng tiềm năng mục tiêu.
Khi không có hoặc cả hai cờ này được xác định trong một ý định, giá trị mặc định hành vi là đưa các bộ lọc của các ứng dụng đã dừng vào danh sách các mục tiêu tiềm năng.
Lưu ý rằng hệ thống sẽ thêm FLAG_EXCLUDE_STOPPED_PACKAGES
vào tất cả thông báo truyền tin
ý định. Lệnh này thực hiện việc này để ngăn các thông báo truyền phát từ các dịch vụ nền từ
vô tình khởi chạy hoặc không cần thiết các thành phần của ứng dụng bị dừng.
Dịch vụ nền hoặc ứng dụng có thể ghi đè hành vi này bằng cách thêm phương thức
Cờ FLAG_INCLUDE_STOPPED_PACKAGES
để truyền tin
ý định được phép kích hoạt các ứng dụng đã dừng.
Ứng dụng sẽ ở trạng thái dừng khi được cài đặt lần đầu nhưng không chưa khởi chạy và khi chúng bị người dùng dừng theo cách thủ công (trong phần Quản lý Ứng dụng).
Thông báo về việc khởi chạy và nâng cấp ứng dụng lần đầu tiên
Nền tảng này bổ sung thông báo cải tiến về lần khởi chạy ứng dụng lần đầu và nâng cấp thông qua hai thao tác theo ý định mới:
ACTION_PACKAGE_FIRST_LAUNCH
— Đã gửi tới gói trình cài đặt của ứng dụng khi ứng dụng đó được khởi chạy lần đầu tiên (tức là lần đầu tiên thiết bị bị chuyển ra khỏi trạng thái dừng). Dữ liệu chứa tên của gói.ACTION_MY_PACKAGE_REPLACED
— Thông báo một ứng dụng đã được cập nhật, với một phiên bản mới được cài đặt qua phiên bản hiện có. Thông tin này chỉ được gửi đến ứng dụng đã được thay thế. Nó không chứa bất kỳ dữ liệu bổ sung nào. Để nhận ý định, hãy khai báo bộ lọc ý định cho hành động này. Bạn có thể sử dụng ý định để kích hoạt mã giúp ứng dụng của bạn trở lại hình dạng đang chạy thích hợp sau khi nâng cấp.Ý định này được gửi trực tiếp đến ứng dụng, nhưng chỉ khi ứng dụng đã được nâng cấp khi ở trạng thái đã bắt đầu (không ở trạng thái đã dừng).
Phần mềm tiện ích cốt lõi
- Bộ nhớ đệm LRU
- Lớp
LruCache
mới cho phép các ứng dụng của bạn hưởng lợi nhờ việc lưu vào bộ nhớ đệm một cách hiệu quả. Các ứng dụng có thể dùng lớp này để giảm thời gian sử dụng tính toán hoặc tải dữ liệu xuống từ mạng, trong khi vẫn duy trì tính hợp lý mức sử dụng bộ nhớ cho dữ liệu được lưu vào bộ nhớ đệm.LruCache
là bộ nhớ đệm có tham chiếu mạnh đến một số lượng giới hạn các giá trị. Mỗi khi một giá trị được được truy cập thì mục đó sẽ được chuyển đến đầu hàng đợi. Khi một giá trị được thêm vào thẻ bộ nhớ đệm, thì giá trị ở cuối hàng đợi đó sẽ bị loại bỏ và có thể đủ điều kiện thu gom rác.
- Lớp
- Chỉ số mô tả tệp là
int
- Giờ đây, bạn có thể lấy int chỉ số mô tả tệp gốc cho
ParcelFileDescriptor
bằng một trong các phương thức mớigetFd()
hoặcdetachFd()
.
- Giờ đây, bạn có thể lấy int chỉ số mô tả tệp gốc cho
WebKit
- Cookie lược đồ tệp
CookieManager
hiện hỗ trợ các cookie sử dụng thời gian Giao thức URIfile:
. Bạn có thể sử dụngsetAcceptFileSchemeCookies()
để bật/tắt tính năng hỗ trợ cho cookie lược đồ tệp trước khi tạo một thực thể trong sốWebView
hoặcCookieManager
. Trong mộtCookieManager
, bạn có thể kiểm tra xem có cookie lược đồ tệp hay không được bật bằng cách gọiallowFileSchemeCookies()
.
- Thông báo về yêu cầu đăng nhập
- Để hỗ trợ các tính năng tự động đăng nhập vào trình duyệt được giới thiệu trong Android 3.0,
hồ sơ thanh toán
phương thức
onReceivedLoginRequest()
thông báo cho máy chủ ứng dụng mà yêu cầu tự động đăng nhập cho người dùng đã được xử lý.
- Để hỗ trợ các tính năng tự động đăng nhập vào trình duyệt được giới thiệu trong Android 3.0,
hồ sơ thanh toán
phương thức
- Đã xoá lớp và giao diện
- Một số lớp và giao diện đã bị xoá khỏi API công khai, sau khi trước đó ở trạng thái không được dùng nữa. Xem API Báo cáo sự khác biệt để biết thêm thông tin.
Trình duyệt
Ứng dụng Trình duyệt thêm các tính năng sau để hỗ trợ web ứng dụng:
- Hỗ trợ phát lại cùng dòng video được nhúng trong HTML5
Thẻ
<video>
. Quá trình phát được tăng tốc phần cứng nếu có thể. - Hỗ trợ lớp cho các phần tử vị trí cố định cho tất cả các trang web (thiết bị di động và máy tính để bàn).
Hằng số tính năng mới
Nền tảng này sẽ thêm các hằng số mới của tính năng phần cứng mà nhà phát triển có thể khai báo
trong tệp kê khai ứng dụng của chúng, để thông báo cho các pháp nhân bên ngoài như Google
Phát yêu cầu của ứng dụng về các tính năng phần cứng mới được hỗ trợ
trong phiên bản này của nền tảng. Nhà phát triển khai báo các tính năng này và các tính năng khác
hằng số trong phần tử tệp kê khai <uses-feature>
.
android.hardware.usb.accessory
— Ứng dụng sử dụng USB API để giao tiếp với các thiết bị phần cứng bên ngoài kết nối qua USB và hoạt động dưới dạng máy chủ.android.hardware.usb.host
– Ứng dụng sử dụng USB API để giao tiếp với các thiết bị phần cứng bên ngoài được kết nối qua USB và hoạt động như thiết bị.
Google Play lọc các ứng dụng dựa trên các tính năng được khai báo trong phần tử tệp kê khai <uses-feature>
. Để biết thêm thông tin về
khai báo tính năng trong tệp kê khai ứng dụng, hãy đọc Google Play
Bộ lọc.
Báo cáo khác biệt về API
Để xem chi tiết tất cả thay đổi đối với API trong Android 3.1 (API Cấp độ 12), hãy xem API Báo cáo điểm khác biệt.
Cấp độ API:
Nền tảng Android 3.1 cung cấp phiên bản cập nhật của API khung. API Android 3.1 được gán một mã nhận dạng bằng số nguyên — 12 — tức là được lưu trữ trong chính hệ thống. Giá trị nhận dạng này, được gọi là "Cấp độ API", cho phép để xác định chính xác xem một ứng dụng có tương thích với hệ thống trước khi cài đặt ứng dụng.
Để sử dụng các API được giới thiệu trong Android 3.1 trong ứng dụng của bạn,
bạn cần biên dịch ứng dụng dựa trên thư viện Android được cung cấp trong
nền tảng SDK Android 3.1. Tuỳ thuộc vào nhu cầu, bạn nên
có thể
bạn cũng cần thêm một android:minSdkVersion="12"
cho phần tử <uses-sdk>
trong đơn đăng ký
tệp kê khai.
Để biết thêm thông tin, hãy đọc bài viết API là gì Cấp độ?