2012-08-22 19 views
8

Câu hỏi này đề cập trên Android chỉ có 2,2:Làm thế nào để biết liệu một động cơ TTS cụ thể có được kiểm tra (bật) không?

Ảnh chụp màn hình dưới đây cho thấy 3 khác nhau text-to-speech động cơ được cài đặt:

  1. Pico TTS (mặc định Android như của Froyo 2.2)
  2. IVONA Văn bản thành giọng nói HQ
  3. SVOX cổ điển TTS

Trong ảnh chụp màn hình này, bạn đồng uld thấy rằng không phải tất cả 3 đều được chọn (bật). Thay vào đó, IVONA không được đánh dấu, chỉ để lại Pico (ngụ ý, vì nó được mã hóa cứng) và SVOX (đã chọn).

enter image description here

Tôi muốn để có thể lập trình truy vấn từ ứng dụng của tôi cho dù một công cụ TTS cụ thể (ví dụ IVONA) là checked (giả sử tôi biết lúc mã hóa tên gói của họ, tất nhiên).

Trong Android 2.2 tất cả tôi có là getDefaultEngine() mà có thể không thực sự giúp đỡ trong một tình huống mà Pico được chọn làm mặc định và SVOX được kiểm tra (nói cách khác, làm thế nào để tôi biết rằng SVOX được chọn nếu Pico là mặc định?)

Làm cách nào để thực hiện điều đó trong Android 2.2?

Điều này có thể thực hiện được không?

P.S. 4.x Android (API> = 14) giới thiệu getEngines() có thể dẫn bạn để tin rằng vấn đề này được giải quyết cho ICS + nhưng kiểm tra chặt chẽ hơn cho thấy rằng:

  1. getEngines() chỉ liệt kê cài đặt, không kiểm tra (kích hoạt) gói.
  2. EngineInfo đi kèm với mỗi gói được liệt kê chỉ cung cấp tên, nhãn, biểu tượng, mức độ ưu tiên và cho dù đó là một phần của hình ảnh hệ thống. Nói cách khác, cùng một giới hạn như trong Android 2.2.

Trả lời

0

Xem Android TextToSpeech API guide

getEngines() sẽ đưa ra một danh sách tất cả các công cụ được cài đặt, với một số thông tin về mỗi.

getDefaultEngine() sẽ đặt tên gói của công cụ mà người dùng đã chọn làm mặc định.

So sánh tên gói của từng công cụ (hoặc danh sách bạn có trước) với tên gói của công cụ mặc định, bạn sẽ có thể xem được chọn cái nào.

Lưu ý rằng chức năng cựu chỉ có sẵn từ cấp API 14, mặc dù thứ hai là có sẵn từ cấp API 8.

+0

Xin lỗi, tôi quên nhấn mạnh rằng tôi đang tìm kiếm một Android 2.2 ** giải pháp tương thích ** . Như bạn đã lưu ý một cách chính xác, 'getEngines()' chỉ sẵn sàng từ API 14. 'getDefaultEngine()' thực sự không thể giúp trong trường hợp * Pico * được chọn làm mặc định và * SVOX * được chọn. Làm cách nào để biết rằng * SVOX * được chọn nếu * Pico * là mặc định? – an00b

+2

Trong tương lai, xin vui lòng nói trong một nhận xét rằng bạn đang chỉnh sửa câu hỏi - câu trả lời của tôi vừa được bình chọn và tôi đoán đó là bởi vì câu hỏi bây giờ nói tất cả nội dung trong câu trả lời. Tôi không thể thấy bất kỳ nội dung nào trong tài liệu Android cho bạn biết về các công cụ được kiểm tra tại API 8, vì vậy tôi nghĩ rằng điều đó có thể là không thể. – Hbcdev

+0

Xin lỗi về điều đó. IMHO, bạn nên xóa câu trả lời này vì không phải 'getEngines()' cũng không 'getDefaultEngine()' có khả năng giúp xác định xem một công cụ TTS cụ thể có được ** kiểm tra hay không **. Nó là tốt hơn rằng câu hỏi này vẫn chưa được trả lời, để mọi người sẽ biết rằng ** nó không phải là có thể ** để nói cho dù một công cụ TTS cụ thể là ** kiểm tra **. +1 cho nhận xét của bạn. – an00b