私は ICS と JB (API15 & API16) の Android ソース コードを調べてきましたが、(私には) コードと jar ファイルの不一致のように見えるものを見つけています。より具体的には、SpeechRecognizer.java には Settings.Secure.VOICE_RECOGNITION_SERVICE への参照があり、これは android/provider/Settings.java でサブクラス Secure の下に定義されています。
public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
しかし、自分のコードから VOICE_RECOGNITION_SERVICE を参照しようとすると、解決できません。Eclipse で jar ファイルを調べると、VOICE_RECOGNITION_SERVICE が定義されていません。実際、Java ソース コードで public として定義されている Settings.Secure のフィールドの多くは、jar ファイルにはありません。jar ファイルがソース ファイルを使用して作成された場合、VOICE_RECOGNITION_SERVICE にアクセスできないのはなぜでしょうか。フィールドがソースで public と宣言されている場合、.jar ファイルからアクセスできるようにすべきではありませんか?