Code drop from //branches/cupcake/...@124589
@@ -20,7 +20,6 @@
|
|||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
<uses-permission android:name="android.permission.DUMP" />
|
<uses-permission android:name="android.permission.DUMP" />
|
||||||
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
|
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
|
||||||
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
|
||||||
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
|
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
||||||
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
|
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
|
||||||
@@ -30,6 +29,7 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.ALL_SERVICES" />
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.ALL_SERVICES" />
|
||||||
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" />
|
<uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" />
|
||||||
|
|
||||||
<application android:label="Dev Tools"
|
<application android:label="Dev Tools"
|
||||||
@@ -71,6 +71,14 @@
|
|||||||
<activity android:name="AppPicker"
|
<activity android:name="AppPicker"
|
||||||
android:theme="@android:style/Theme.Dialog">
|
android:theme="@android:style/Theme.Dialog">
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity android:name="PointerLocation" android:label="Pointer Location"
|
||||||
|
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
|
||||||
|
android:configChanges="keyboard|keyboardHidden|navigation|orientation">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.TEST" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity android:name="DataList">
|
<activity android:name="DataList">
|
||||||
</activity>
|
</activity>
|
||||||
@@ -103,5 +111,30 @@
|
|||||||
<category android:name="android.intent.category.TEST" />
|
<category android:name="android.intent.category.TEST" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity android:name="RunningProcesses" android:label="Running processes">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.TEST" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity android:name="ProcessInfo" android:label="Process Information">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity android:name="AppHwConfigList" android:label="Applications Hw Configuration">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.TEST" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity android:name="AppHwPref" android:label="Applications Hardware Preferences">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
82
apps/Development/res/layout/application_hw_pref.xml
Executable file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2007 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:padding="4dip" >
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_package_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/package_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_package"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_touchscreen_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/touchscreen_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_touchscreen"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_input_method_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/input_method_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_input_method"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_hard_keyboard_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/hard_keyboard_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_hard_keyboard"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_navigation_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/navigation_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_navigation"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/attr_five_way_nav_label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/five_way_nav_label"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/attr_five_way_nav"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
@@ -48,17 +48,10 @@
|
|||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:text="@string/development_settings_wait_for_debugger_text" />
|
android:text="@string/development_settings_wait_for_debugger_text" />
|
||||||
|
|
||||||
<CheckBox android:id="@+id/enable_adb"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/wait_for_debugger"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:text="@string/development_settings_enable_adb_text" />
|
|
||||||
|
|
||||||
<View android:id="@+id/separator"
|
<View android:id="@+id/separator"
|
||||||
android:layout_width="8dip"
|
android:layout_width="8dip"
|
||||||
android:layout_height="8dip"
|
android:layout_height="8dip"
|
||||||
android:layout_below="@id/enable_adb"
|
android:layout_below="@id/wait_for_debugger"
|
||||||
android:layout_alignParentLeft="true" />
|
android:layout_alignParentLeft="true" />
|
||||||
|
|
||||||
<CheckBox android:id="@+id/show_load"
|
<CheckBox android:id="@+id/show_load"
|
||||||
@@ -122,17 +115,10 @@
|
|||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:text="@string/development_settings_show_sleep_text" />
|
android:text="@string/development_settings_show_sleep_text" />
|
||||||
|
|
||||||
<CheckBox android:id="@+id/keep_screen_on"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/show_sleep"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:text="@string/development_settings_keep_screen_on_text" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/window_animation_scale"
|
<Spinner android:id="@+id/window_animation_scale"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/keep_screen_on"
|
android:layout_below="@id/show_sleep"
|
||||||
android:layout_alignParentLeft="true">
|
android:layout_alignParentLeft="true">
|
||||||
</Spinner>
|
</Spinner>
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@@ -37,14 +37,34 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/gls_tester_require_google"/>
|
android:text="@string/gls_tester_require_google"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/get_accounts"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/gls_tester_get_accounts"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/clear"
|
android:id="@+id/clear"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/gls_tester_clear"/>
|
android:text="@string/gls_tester_clear"/>
|
||||||
|
|
||||||
|
<Button android:id="@+id/go"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/gls_tester_go"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<EditText android:id="@+id/username_edit"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minWidth="250dip"
|
||||||
|
android:scrollHorizontally="true"
|
||||||
|
android:capitalize="none"
|
||||||
|
android:autoText="false"/>
|
||||||
|
|
||||||
<LinearLayout android:orientation="horizontal"
|
<LinearLayout android:orientation="horizontal"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|||||||
51
apps/Development/res/layout/process_info.xml
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2007 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:padding="4dip" >
|
||||||
|
|
||||||
|
<TextView android:id="@+id/process_name_header"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/process_name_header"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<TextView android:id="@+id/process_name"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
<TextView android:id="@+id/package_list_header"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/package_list_header"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<LinearLayout android:id="@+id/package_list"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingTop="4dip"
|
||||||
|
android:paddingBottom="6dip"
|
||||||
|
android:paddingRight="4dip" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
@@ -21,10 +21,10 @@
|
|||||||
<string name="menu_upload_exceptions">Upload Exceptions</string>
|
<string name="menu_upload_exceptions">Upload Exceptions</string>
|
||||||
<string name="menu_clear_exceptions">Clear Exceptions</string>
|
<string name="menu_clear_exceptions">Clear Exceptions</string>
|
||||||
|
|
||||||
<string name="device_info_default">unknown</string>
|
<string name="device_info_default">unknown</string>
|
||||||
<string name="device_info_uptime">Uptime</string>
|
<string name="device_info_uptime">Uptime</string>
|
||||||
<string name="device_info_awaketime">Awake Time</string>
|
<string name="device_info_awaketime">Awake Time</string>
|
||||||
<string name="device_info_asleeptime">Asleep Time</string>
|
<string name="device_info_asleeptime">Asleep Time</string>
|
||||||
|
|
||||||
<string name="build_id_label">Build ID</string>
|
<string name="build_id_label">Build ID</string>
|
||||||
<string name="build_date_label">Build Date</string>
|
<string name="build_date_label">Build Date</string>
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
<string name="development_settings_show_load_text">Show running processes</string>
|
<string name="development_settings_show_load_text">Show running processes</string>
|
||||||
<string name="development_settings_show_updates_text">Show screen updates</string>
|
<string name="development_settings_show_updates_text">Show screen updates</string>
|
||||||
<string name="development_settings_enable_gl_text">Enable OpenGL ES (reboot needed)</string>
|
<string name="development_settings_enable_gl_text">Enable OpenGL ES (reboot needed)</string>
|
||||||
<string name="development_settings_enable_adb_text">Enable ADB</string>
|
<string name="development_settings_allow_mock_location_text">Allow mock locations for testing</string>
|
||||||
<string name="development_settings_wait_for_debugger_text">Wait for debugger</string>
|
<string name="development_settings_wait_for_debugger_text">Wait for debugger</string>
|
||||||
<string name="development_settings_show_background_text">Show background</string>
|
<string name="development_settings_show_background_text">Show background</string>
|
||||||
<string name="development_settings_show_xmpp_text">Show GTalk service connection status</string>
|
<string name="development_settings_show_xmpp_text">Show GTalk service connection status</string>
|
||||||
@@ -105,11 +105,22 @@
|
|||||||
<string name="red_button_behavior_label">End Button Behavior</string>
|
<string name="red_button_behavior_label">End Button Behavior</string>
|
||||||
|
|
||||||
<string name="gls_tester_label">GLS Tester</string>
|
<string name="gls_tester_label">GLS Tester</string>
|
||||||
<string name="gls_tester_prefer_hosted">Prefer Hosted</string>
|
<string name="gls_tester_prefer_hosted">Hosted</string>
|
||||||
<string name="gls_tester_require_google">Require Google</string>
|
<string name="gls_tester_require_google">Google</string>
|
||||||
|
<string name="gls_tester_get_accounts">List</string>
|
||||||
<string name="gls_tester_clear">Clear</string>
|
<string name="gls_tester_clear">Clear</string>
|
||||||
|
<string name="gls_tester_go">Go</string>
|
||||||
<string name="gls_tester_do_notification">Notify on failure</string>
|
<string name="gls_tester_do_notification">Notify on failure</string>
|
||||||
<string name="gls_tester_run_intent">Run intent</string>
|
<string name="gls_tester_run_intent">Run intent</string>
|
||||||
<string name="gls_tester_wipe_passwords">Wipe passwords</string>
|
<string name="gls_tester_wipe_passwords">Wipe passwords</string>
|
||||||
|
<string name="process_name_header">Process Name:</string>
|
||||||
|
<string name="package_list_header">Packages in process:</string>
|
||||||
|
<string name="package_label">Package Name:</string>
|
||||||
|
|
||||||
|
<!-- Application configuration requirements related attributes -->
|
||||||
|
<string name="touchscreen_label">touchscreen:</string>
|
||||||
|
<string name="input_method_label">inputMethod:</string>
|
||||||
|
<string name="hard_keyboard_label">hardKeyboard:</string>
|
||||||
|
<string name="navigation_label">navigation:</string>
|
||||||
|
<string name="five_way_nav_label">five way nav:</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
156
apps/Development/src/com/android/development/AppHwConfigList.java
Executable file
@@ -0,0 +1,156 @@
|
|||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.development;
|
||||||
|
|
||||||
|
import android.app.ListActivity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.widget.BaseAdapter;
|
||||||
|
import android.widget.ListView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import java.text.Collator;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class AppHwConfigList extends ListActivity {
|
||||||
|
private static final String TAG = "AppHwConfigList";
|
||||||
|
PackageManager mPm;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
|
||||||
|
mPm = getPackageManager();
|
||||||
|
mAdapter = new AppListAdapter(this);
|
||||||
|
if (mAdapter.getCount() <= 0) {
|
||||||
|
finish();
|
||||||
|
} else {
|
||||||
|
setListAdapter(mAdapter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onListItemClick(ListView l, View v, int position, long id) {
|
||||||
|
PackageInfo app = mAdapter.appForPosition(position);
|
||||||
|
// TODO display all preference settings
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
|
intent.setClass(this, AppHwPref.class);
|
||||||
|
intent.putExtra("packageName", app.packageName);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class AppListAdapter extends BaseAdapter {
|
||||||
|
public AppListAdapter(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
|
|
||||||
|
List<ApplicationInfo> appList = mPm.getInstalledApplications(0);
|
||||||
|
for (ApplicationInfo app : appList) {
|
||||||
|
PackageInfo pkgInfo = null;
|
||||||
|
try {
|
||||||
|
pkgInfo = mPm.getPackageInfo(app.packageName, 0);
|
||||||
|
} catch (NameNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if ((pkgInfo != null)) {
|
||||||
|
if(mList == null) {
|
||||||
|
mList = new ArrayList<PackageInfo>();
|
||||||
|
}
|
||||||
|
mList.add(pkgInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mList != null) {
|
||||||
|
Collections.sort(mList, sDisplayNameComparator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public PackageInfo appForPosition(int position) {
|
||||||
|
if (mList == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return mList.get(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCount() {
|
||||||
|
return mList != null ? mList.size() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getItem(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getItemId(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
|
View view;
|
||||||
|
if (convertView == null) {
|
||||||
|
view = mInflater.inflate(
|
||||||
|
android.R.layout.simple_list_item_1, parent, false);
|
||||||
|
} else {
|
||||||
|
view = convertView;
|
||||||
|
}
|
||||||
|
bindView(view, mList.get(position));
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final void bindView(View view, PackageInfo info) {
|
||||||
|
TextView text = (TextView)view.findViewById(android.R.id.text1);
|
||||||
|
text.setText(info != null ? info.applicationInfo.loadLabel(mPm) : "(none)");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final Context mContext;
|
||||||
|
protected final LayoutInflater mInflater;
|
||||||
|
protected List<PackageInfo> mList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Comparator sDisplayNameComparator = new Comparator() {
|
||||||
|
public final int compare(Object a, Object b) {
|
||||||
|
CharSequence sa = ((PackageInfo) a).applicationInfo.loadLabel(mPm);
|
||||||
|
CharSequence sb = ((PackageInfo) b).applicationInfo.loadLabel(mPm);
|
||||||
|
return collator.compare(sa, sb);
|
||||||
|
}
|
||||||
|
private final Collator collator = Collator.getInstance();
|
||||||
|
};
|
||||||
|
|
||||||
|
private AppListAdapter mAdapter;
|
||||||
|
}
|
||||||
|
|
||||||
228
apps/Development/src/com/android/development/AppHwPref.java
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.development;
|
||||||
|
|
||||||
|
import com.android.development.R;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.ListActivity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.ConfigurationInfo;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.widget.BaseAdapter;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.ListView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import java.text.Collator;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/* This activity displays the hardware configuration details
|
||||||
|
* of an application as defined in its manifests
|
||||||
|
*/
|
||||||
|
public class AppHwPref extends Activity {
|
||||||
|
private static final String TAG = "AppHwPref";
|
||||||
|
PackageManager mPm;
|
||||||
|
private static final int BASE = 0;
|
||||||
|
private static final int TOUCHSCREEN = BASE + 1;
|
||||||
|
private static final int KEYBOARD_TYPE = BASE + 2;
|
||||||
|
private static final int NAVIGATION = BASE + 3;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
Intent intent = getIntent();
|
||||||
|
String pkgName = intent.getStringExtra("packageName");
|
||||||
|
if(pkgName == null) {
|
||||||
|
handleError("Null package name", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mPm = getPackageManager();
|
||||||
|
PackageInfo pInfo;
|
||||||
|
try {
|
||||||
|
pInfo = mPm.getPackageInfo(pkgName, PackageManager.GET_CONFIGURATIONS);
|
||||||
|
} catch (NameNotFoundException e) {
|
||||||
|
pInfo = null;
|
||||||
|
}
|
||||||
|
if(pInfo == null) {
|
||||||
|
handleError("Failed retrieving packageInfo for pkg:"+pkgName, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConfigurationInfo appHwPref[] = pInfo.configPreferences;
|
||||||
|
|
||||||
|
setContentView(R.layout.application_hw_pref);
|
||||||
|
if(appHwPref != null) {
|
||||||
|
displayTextView(R.id.attr_package, pInfo.applicationInfo.loadLabel(mPm));
|
||||||
|
displayTextView(R.id.attr_touchscreen, appHwPref, TOUCHSCREEN);
|
||||||
|
displayTextView(R.id.attr_input_method, appHwPref, KEYBOARD_TYPE);
|
||||||
|
displayTextView(R.id.attr_navigation, appHwPref, NAVIGATION);
|
||||||
|
displayFlag(R.id.attr_hard_keyboard, ConfigurationInfo.INPUT_FEATURE_HARD_KEYBOARD, appHwPref);
|
||||||
|
displayFlag(R.id.attr_five_way_nav, ConfigurationInfo.INPUT_FEATURE_FIVE_WAY_NAV, appHwPref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void displayFlag(int viewId, int flagMask, ConfigurationInfo[] appHwPref) {
|
||||||
|
if(appHwPref == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean flag = false;
|
||||||
|
for (int i = 0; i < appHwPref.length; i++) {
|
||||||
|
ConfigurationInfo pref = appHwPref[i];
|
||||||
|
if((pref.reqInputFeatures & flagMask) != 0) {
|
||||||
|
flag = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(flag) {
|
||||||
|
displayTextView(viewId, "true");
|
||||||
|
} else {
|
||||||
|
displayTextView(viewId, "false");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleError(String errMsg, boolean finish) {
|
||||||
|
// TODO display dialog
|
||||||
|
Log.i(TAG, errMsg);
|
||||||
|
if(finish) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void displayTextView(int textViewId, CharSequence displayStr) {
|
||||||
|
TextView tView = (TextView) findViewById(textViewId);
|
||||||
|
if(displayStr != null) {
|
||||||
|
tView.setText(displayStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void displayTextView(int viewId, ConfigurationInfo[] config, int type) {
|
||||||
|
if((config == null) || (config.length < 1)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
HashSet<String> list = new HashSet<String>();
|
||||||
|
for(int i = 0; i < config.length; i++) {
|
||||||
|
String str = null;
|
||||||
|
switch(type) {
|
||||||
|
case TOUCHSCREEN:
|
||||||
|
str = getTouchScreenStr(config[i]);
|
||||||
|
break;
|
||||||
|
case KEYBOARD_TYPE:
|
||||||
|
str = getKeyboardTypeStr(config[i]);
|
||||||
|
break;
|
||||||
|
case NAVIGATION:
|
||||||
|
str = getNavigationStr(config[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(str != null) {
|
||||||
|
list.add(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String listStr = "";
|
||||||
|
boolean set = false;
|
||||||
|
for(String str : list) {
|
||||||
|
set = true;
|
||||||
|
listStr += str+",";
|
||||||
|
}
|
||||||
|
if(set) {
|
||||||
|
TextView tView = (TextView)findViewById(viewId);
|
||||||
|
CharSequence txt = listStr.subSequence(0, listStr.length()-1);
|
||||||
|
tView.setText(txt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String getTouchScreenStr(ConfigurationInfo appHwPref) {
|
||||||
|
if(appHwPref == null) {
|
||||||
|
handleError("Invalid HardwareConfigurationObject", true);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
switch(appHwPref.reqTouchScreen) {
|
||||||
|
case Configuration.TOUCHSCREEN_FINGER:
|
||||||
|
return "finger";
|
||||||
|
case Configuration.TOUCHSCREEN_NOTOUCH:
|
||||||
|
return "notouch";
|
||||||
|
case Configuration.TOUCHSCREEN_STYLUS:
|
||||||
|
return "stylus";
|
||||||
|
case Configuration.TOUCHSCREEN_UNDEFINED:
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String getKeyboardTypeStr(ConfigurationInfo appHwPref) {
|
||||||
|
if(appHwPref == null) {
|
||||||
|
handleError("Invalid HardwareConfigurationObject", true);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
switch(appHwPref.reqKeyboardType) {
|
||||||
|
case Configuration.KEYBOARD_12KEY:
|
||||||
|
return "12key";
|
||||||
|
case Configuration.KEYBOARD_NOKEYS:
|
||||||
|
return "nokeys";
|
||||||
|
case Configuration.KEYBOARD_QWERTY:
|
||||||
|
return "querty";
|
||||||
|
case Configuration.KEYBOARD_UNDEFINED:
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String getNavigationStr(ConfigurationInfo appHwPref) {
|
||||||
|
if(appHwPref == null) {
|
||||||
|
handleError("Invalid HardwareConfigurationObject", true);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
switch(appHwPref.reqNavigation) {
|
||||||
|
case Configuration.NAVIGATION_DPAD:
|
||||||
|
return "dpad";
|
||||||
|
case Configuration.NAVIGATION_TRACKBALL:
|
||||||
|
return "trackball";
|
||||||
|
case Configuration.NAVIGATION_WHEEL:
|
||||||
|
return "wheel";
|
||||||
|
case Configuration.NAVIGATION_UNDEFINED:
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -49,7 +49,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
private static final int DEBUG_APP_REQUEST = 1;
|
private static final int DEBUG_APP_REQUEST = 1;
|
||||||
|
|
||||||
private Button mDebugAppButton;
|
private Button mDebugAppButton;
|
||||||
private CheckBox mEnableAdbCB;
|
|
||||||
private CheckBox mWaitForDebuggerCB;
|
private CheckBox mWaitForDebuggerCB;
|
||||||
private CheckBox mAlwaysFinishCB;
|
private CheckBox mAlwaysFinishCB;
|
||||||
private CheckBox mShowLoadCB;
|
private CheckBox mShowLoadCB;
|
||||||
@@ -59,7 +58,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
private CheckBox mShowBackgroundCB;
|
private CheckBox mShowBackgroundCB;
|
||||||
private CheckBox mShowSleepCB;
|
private CheckBox mShowSleepCB;
|
||||||
private CheckBox mShowMapsCompassCB;
|
private CheckBox mShowMapsCompassCB;
|
||||||
private CheckBox mKeepScreenOnCB;
|
|
||||||
private CheckBox mShowXmppCB;
|
private CheckBox mShowXmppCB;
|
||||||
private Spinner mMaxProcsSpinner;
|
private Spinner mMaxProcsSpinner;
|
||||||
private Spinner mWindowAnimationScaleSpinner;
|
private Spinner mWindowAnimationScaleSpinner;
|
||||||
@@ -67,13 +65,11 @@ public class DevelopmentSettings extends Activity {
|
|||||||
private Spinner mFontHintingSpinner;
|
private Spinner mFontHintingSpinner;
|
||||||
|
|
||||||
private String mDebugApp;
|
private String mDebugApp;
|
||||||
private boolean mEnableAdb;
|
|
||||||
private boolean mWaitForDebugger;
|
private boolean mWaitForDebugger;
|
||||||
private boolean mAlwaysFinish;
|
private boolean mAlwaysFinish;
|
||||||
private int mProcessLimit;
|
private int mProcessLimit;
|
||||||
private boolean mShowSleep;
|
private boolean mShowSleep;
|
||||||
private boolean mShowMapsCompass;
|
private boolean mShowMapsCompass;
|
||||||
private boolean mKeepScreenOn;
|
|
||||||
private boolean mShowXmpp;
|
private boolean mShowXmpp;
|
||||||
private AnimationScaleSelectedListener mWindowAnimationScale
|
private AnimationScaleSelectedListener mWindowAnimationScale
|
||||||
= new AnimationScaleSelectedListener(0);
|
= new AnimationScaleSelectedListener(0);
|
||||||
@@ -93,8 +89,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
|
|
||||||
mDebugAppButton = (Button)findViewById(R.id.debug_app);
|
mDebugAppButton = (Button)findViewById(R.id.debug_app);
|
||||||
mDebugAppButton.setOnClickListener(mDebugAppClicked);
|
mDebugAppButton.setOnClickListener(mDebugAppClicked);
|
||||||
mEnableAdbCB = (CheckBox)findViewById(R.id.enable_adb);
|
|
||||||
mEnableAdbCB.setOnClickListener(mEnableAdbClicked);
|
|
||||||
mWaitForDebuggerCB = (CheckBox)findViewById(R.id.wait_for_debugger);
|
mWaitForDebuggerCB = (CheckBox)findViewById(R.id.wait_for_debugger);
|
||||||
mWaitForDebuggerCB.setOnClickListener(mWaitForDebuggerClicked);
|
mWaitForDebuggerCB.setOnClickListener(mWaitForDebuggerClicked);
|
||||||
mAlwaysFinishCB = (CheckBox)findViewById(R.id.always_finish);
|
mAlwaysFinishCB = (CheckBox)findViewById(R.id.always_finish);
|
||||||
@@ -114,8 +108,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
mShowSleepCB.setOnClickListener(mShowSleepClicked);
|
mShowSleepCB.setOnClickListener(mShowSleepClicked);
|
||||||
mShowMapsCompassCB = (CheckBox)findViewById(R.id.show_maps_compass);
|
mShowMapsCompassCB = (CheckBox)findViewById(R.id.show_maps_compass);
|
||||||
mShowMapsCompassCB.setOnClickListener(mShowMapsCompassClicked);
|
mShowMapsCompassCB.setOnClickListener(mShowMapsCompassClicked);
|
||||||
mKeepScreenOnCB = (CheckBox)findViewById(R.id.keep_screen_on);
|
|
||||||
mKeepScreenOnCB.setOnClickListener(mKeepScreenOnClicked);
|
|
||||||
mShowXmppCB = (CheckBox)findViewById(R.id.show_xmpp);
|
mShowXmppCB = (CheckBox)findViewById(R.id.show_xmpp);
|
||||||
mShowXmppCB.setOnClickListener(mShowXmppClicked);
|
mShowXmppCB.setOnClickListener(mShowXmppClicked);
|
||||||
mMaxProcsSpinner = (Spinner)findViewById(R.id.max_procs);
|
mMaxProcsSpinner = (Spinner)findViewById(R.id.max_procs);
|
||||||
@@ -181,7 +173,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
updateFlingerOptions();
|
updateFlingerOptions();
|
||||||
updateSleepOptions();
|
updateSleepOptions();
|
||||||
updateMapsCompassOptions();
|
updateMapsCompassOptions();
|
||||||
updateKeepScreenOnOptions();
|
|
||||||
updateXmppOptions();
|
updateXmppOptions();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -210,13 +201,10 @@ public class DevelopmentSettings extends Activity {
|
|||||||
getContentResolver(), Settings.System.DEBUG_APP);
|
getContentResolver(), Settings.System.DEBUG_APP);
|
||||||
mWaitForDebugger = Settings.System.getInt(
|
mWaitForDebugger = Settings.System.getInt(
|
||||||
getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0;
|
getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0;
|
||||||
mEnableAdb = Settings.System.getInt(
|
|
||||||
getContentResolver(), Settings.System.ADB_ENABLED, 0) != 0;
|
|
||||||
|
|
||||||
mDebugAppButton.setText(
|
mDebugAppButton.setText(
|
||||||
mDebugApp == null || mDebugApp.length() == 0 ? "(none)" : mDebugApp);
|
mDebugApp == null || mDebugApp.length() == 0 ? "(none)" : mDebugApp);
|
||||||
mWaitForDebuggerCB.setChecked(mWaitForDebugger);
|
mWaitForDebuggerCB.setChecked(mWaitForDebugger);
|
||||||
mEnableAdbCB.setChecked(mEnableAdb);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeFinishOptions() {
|
private void writeFinishOptions() {
|
||||||
@@ -330,17 +318,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
mShowMapsCompassCB.setChecked(mShowMapsCompass);
|
mShowMapsCompassCB.setChecked(mShowMapsCompass);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeKeepScreenOnOptions() {
|
|
||||||
Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN,
|
|
||||||
mKeepScreenOn ? 1 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateKeepScreenOnOptions() {
|
|
||||||
mKeepScreenOn = Settings.System.getInt(getContentResolver(),
|
|
||||||
Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0;
|
|
||||||
mKeepScreenOnCB.setChecked(mKeepScreenOn);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void writeXmppOptions() {
|
private void writeXmppOptions() {
|
||||||
Settings.System.setShowGTalkServiceStatus(getContentResolver(), mShowXmpp);
|
Settings.System.setShowGTalkServiceStatus(getContentResolver(), mShowXmpp);
|
||||||
}
|
}
|
||||||
@@ -367,13 +344,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private View.OnClickListener mEnableAdbClicked = new View.OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
Settings.System.putInt(getContentResolver(), Settings.System.ADB_ENABLED,
|
|
||||||
((CheckBox)v).isChecked() ? 1 : 0);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private View.OnClickListener mWaitForDebuggerClicked =
|
private View.OnClickListener mWaitForDebuggerClicked =
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@@ -450,15 +420,6 @@ public class DevelopmentSettings extends Activity {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
private View.OnClickListener mKeepScreenOnClicked =
|
|
||||||
new View.OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
mKeepScreenOn = ((CheckBox)v).isChecked();
|
|
||||||
writeKeepScreenOnOptions();
|
|
||||||
updateKeepScreenOnOptions();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private View.OnClickListener mShowXmppClicked = new View.OnClickListener() {
|
private View.OnClickListener mShowXmppClicked = new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
mShowXmpp = ((CheckBox)v).isChecked();
|
mShowXmpp = ((CheckBox)v).isChecked();
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ import android.database.Cursor;
|
|||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.pim.DateUtils;
|
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Selection;
|
import android.text.Selection;
|
||||||
|
import android.text.format.DateUtils;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.RemoteException;
|
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,12 +53,10 @@ public class GLSTester extends Activity {
|
|||||||
CheckBox mDoNotify = null;
|
CheckBox mDoNotify = null;
|
||||||
CheckBox mRunIntent = null;
|
CheckBox mRunIntent = null;
|
||||||
Spinner mService = null;
|
Spinner mService = null;
|
||||||
|
EditText mUsernameEdit = null;
|
||||||
|
|
||||||
private class Listener implements View.OnClickListener {
|
private class Listener implements View.OnClickListener {
|
||||||
private boolean mRequireGoogle;
|
public Listener() {
|
||||||
|
|
||||||
public Listener(boolean requireGoogle) {
|
|
||||||
mRequireGoogle = requireGoogle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@@ -69,7 +68,10 @@ public class GLSTester extends Activity {
|
|||||||
String service = (String) mService.getSelectedItem();
|
String service = (String) mService.getSelectedItem();
|
||||||
mText.append("service: " + service + "\n");
|
mText.append("service: " + service + "\n");
|
||||||
|
|
||||||
String account = mGls.getAccount(mRequireGoogle);
|
String account = mUsernameEdit.getText().toString();
|
||||||
|
if (account.length() == 0) {
|
||||||
|
account = null;
|
||||||
|
}
|
||||||
mText.append("account: " + account + "\n");
|
mText.append("account: " + account + "\n");
|
||||||
GoogleLoginCredentialsResult result =
|
GoogleLoginCredentialsResult result =
|
||||||
mGls.blockingGetCredentials(account, service, mDoNotify.isChecked());
|
mGls.blockingGetCredentials(account, service, mDoNotify.isChecked());
|
||||||
@@ -120,6 +122,8 @@ public class GLSTester extends Activity {
|
|||||||
setContentView(R.layout.gls_tester);
|
setContentView(R.layout.gls_tester);
|
||||||
|
|
||||||
mText = (LogTextBox) findViewById(R.id.text);
|
mText = (LogTextBox) findViewById(R.id.text);
|
||||||
|
mText.append("Hello, world!\n");
|
||||||
|
Log.v(TAG, "hello, world!");
|
||||||
|
|
||||||
mDoNotify = (CheckBox) findViewById(R.id.do_notification);
|
mDoNotify = (CheckBox) findViewById(R.id.do_notification);
|
||||||
mRunIntent = (CheckBox) findViewById(R.id.run_intent);
|
mRunIntent = (CheckBox) findViewById(R.id.run_intent);
|
||||||
@@ -127,11 +131,47 @@ public class GLSTester extends Activity {
|
|||||||
|
|
||||||
mService = (Spinner) findViewById(R.id.service_spinner);
|
mService = (Spinner) findViewById(R.id.service_spinner);
|
||||||
|
|
||||||
|
mUsernameEdit = (EditText) findViewById(R.id.username_edit);
|
||||||
|
|
||||||
Button b;
|
Button b;
|
||||||
b = (Button) findViewById(R.id.require_google);
|
b = (Button) findViewById(R.id.require_google);
|
||||||
b.setOnClickListener(new Listener(GoogleLoginServiceConstants.REQUIRE_GOOGLE));
|
b.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) {
|
||||||
|
try {
|
||||||
|
String account = mGls.getAccount(GoogleLoginServiceConstants.REQUIRE_GOOGLE);
|
||||||
|
mText.append("REQUIRE_GOOGLE gave: " + account + "\n");
|
||||||
|
mUsernameEdit.setText(account == null ? "" : account);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
mText.append("exception: " + e + "\n");
|
||||||
|
}
|
||||||
|
} });
|
||||||
|
|
||||||
b = (Button) findViewById(R.id.prefer_hosted);
|
b = (Button) findViewById(R.id.prefer_hosted);
|
||||||
b.setOnClickListener(new Listener(GoogleLoginServiceConstants.PREFER_HOSTED));
|
b.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) {
|
||||||
|
try {
|
||||||
|
String account = mGls.getAccount(GoogleLoginServiceConstants.PREFER_HOSTED);
|
||||||
|
mText.append("PREFER_HOSTED gave: " + account + "\n");
|
||||||
|
mUsernameEdit.setText(account == null ? "" : account);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
mText.append("exception: " + e + "\n");
|
||||||
|
}
|
||||||
|
} });
|
||||||
|
|
||||||
|
|
||||||
|
b = (Button) findViewById(R.id.get_accounts);
|
||||||
|
b.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) {
|
||||||
|
try {
|
||||||
|
String[] accounts = mGls.getAccounts();
|
||||||
|
mText.append("account list: (" + accounts.length + " entries)\n");
|
||||||
|
for (String username: accounts) {
|
||||||
|
mText.append(" " + username + "\n");
|
||||||
|
}
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
mText.append("exception: " + e + "\n");
|
||||||
|
}
|
||||||
|
} });
|
||||||
|
|
||||||
b = (Button) findViewById(R.id.clear);
|
b = (Button) findViewById(R.id.clear);
|
||||||
b.setOnClickListener(new View.OnClickListener() {
|
b.setOnClickListener(new View.OnClickListener() {
|
||||||
@@ -139,6 +179,9 @@ public class GLSTester extends Activity {
|
|||||||
mText.setText("");
|
mText.setText("");
|
||||||
} });
|
} });
|
||||||
|
|
||||||
|
b = (Button) findViewById(R.id.go);
|
||||||
|
b.setOnClickListener(new Listener());
|
||||||
|
|
||||||
b = (Button) findViewById(R.id.wipe_passwords);
|
b = (Button) findViewById(R.id.wipe_passwords);
|
||||||
b.setOnClickListener(new View.OnClickListener() {
|
b.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|||||||
62
apps/Development/src/com/android/development/ProcessInfo.java
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.development;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
public class ProcessInfo extends Activity {
|
||||||
|
PackageManager mPm;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
Intent intent = getIntent();
|
||||||
|
String processName = intent.getStringExtra("processName");
|
||||||
|
String pkgList[] = intent.getStringArrayExtra("packageList");
|
||||||
|
mPm = getPackageManager();
|
||||||
|
setContentView(R.layout.process_info);
|
||||||
|
TextView processNameView = (TextView) findViewById(R.id.process_name);
|
||||||
|
LinearLayout pkgListView = (LinearLayout) findViewById(R.id.package_list);
|
||||||
|
if(processName != null) {
|
||||||
|
processNameView.setText(processName);
|
||||||
|
}
|
||||||
|
if(pkgList != null) {
|
||||||
|
for(String pkg : pkgList) {
|
||||||
|
TextView pkgView = new TextView(this);
|
||||||
|
pkgView.setText(pkg);
|
||||||
|
pkgListView.addView(pkgView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -19,11 +19,11 @@ package com.android.development;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.pim.DateFormat;
|
|
||||||
import android.provider.Checkin;
|
import android.provider.Checkin;
|
||||||
import com.android.internal.telephony.Phone;
|
import com.android.internal.telephony.Phone;
|
||||||
import com.android.internal.telephony.PhoneFactory;
|
import com.android.internal.telephony.PhoneFactory;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.ServiceState;
|
||||||
|
import android.text.format.DateFormat;
|
||||||
import static com.android.internal.util.CharSequences.forAsciiBytes;
|
import static com.android.internal.util.CharSequences.forAsciiBytes;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
|||||||
154
apps/Development/src/com/android/development/RunningProcesses.java
Executable file
@@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.development;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.app.ListActivity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.widget.BaseAdapter;
|
||||||
|
import android.widget.ListView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import java.text.Collator;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RunningProcesses extends ListActivity {
|
||||||
|
PackageManager mPm;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
|
||||||
|
mPm = getPackageManager();
|
||||||
|
mAdapter = new AppListAdapter(this);
|
||||||
|
if (mAdapter.getCount() <= 0) {
|
||||||
|
finish();
|
||||||
|
} else {
|
||||||
|
setListAdapter(mAdapter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onListItemClick(ListView l, View v, int position, long id) {
|
||||||
|
ListItem app = mAdapter.appForPosition(position);
|
||||||
|
// Create intent to start new activity
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
|
intent.setClass(this, ProcessInfo.class);
|
||||||
|
intent.putExtra("processName", app.procInfo.processName);
|
||||||
|
intent.putExtra("packageList", app.procInfo.pkgList);
|
||||||
|
// start new activity to display extended information
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class AppListAdapter extends BaseAdapter {
|
||||||
|
public AppListAdapter(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
|
|
||||||
|
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
|
List<ActivityManager.RunningAppProcessInfo> appList = am.getRunningAppProcesses();
|
||||||
|
for (ActivityManager.RunningAppProcessInfo app : appList) {
|
||||||
|
if(mList == null) {
|
||||||
|
mList = new ArrayList<ListItem>();
|
||||||
|
}
|
||||||
|
mList.add(new ListItem(app));
|
||||||
|
}
|
||||||
|
if (mList != null) {
|
||||||
|
Collections.sort(mList, sDisplayNameComparator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListItem appForPosition(int position) {
|
||||||
|
if (mList == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return mList.get(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCount() {
|
||||||
|
return mList != null ? mList.size() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getItem(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getItemId(int position) {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
|
View view;
|
||||||
|
if (convertView == null) {
|
||||||
|
view = mInflater.inflate(
|
||||||
|
android.R.layout.simple_list_item_1, parent, false);
|
||||||
|
} else {
|
||||||
|
view = convertView;
|
||||||
|
}
|
||||||
|
bindView(view, mList.get(position));
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final void bindView(View view, ListItem info) {
|
||||||
|
TextView text = (TextView)view.findViewById(android.R.id.text1);
|
||||||
|
text.setText(info != null ? info.procInfo.processName : "(none)");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final Context mContext;
|
||||||
|
protected final LayoutInflater mInflater;
|
||||||
|
protected List<ListItem> mList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Comparator sDisplayNameComparator = new Comparator() {
|
||||||
|
public final int compare(Object a, Object b) {
|
||||||
|
CharSequence sa = ((ListItem) a).procInfo.processName;
|
||||||
|
CharSequence sb = ((ListItem) b).procInfo.processName;
|
||||||
|
return collator.compare(sa, sb);
|
||||||
|
}
|
||||||
|
private final Collator collator = Collator.getInstance();
|
||||||
|
};
|
||||||
|
|
||||||
|
private class ListItem {
|
||||||
|
ActivityManager.RunningAppProcessInfo procInfo;
|
||||||
|
public ListItem(ActivityManager.RunningAppProcessInfo pInfo) {
|
||||||
|
procInfo = pInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private AppListAdapter mAdapter;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
<string name="appTitle">Rückgriff</string>
|
|
||||||
<string name="error">Dieser Vorgang wird derzeit nicht unterstützt.</string>
|
|
||||||
<string name="title">Nicht unterstützter Vorgang</string>
|
|
||||||
</resources>
|
|
||||||
7
apps/Fallback/res/values-de/strings.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<string name="appTitle">"Fallback"</string>
|
||||||
|
<string name="title">"Nicht unterstützte Aktion"</string>
|
||||||
|
<string name="error">"Diese Aktion wird zurzeit nicht unterstützt."</string>
|
||||||
|
</resources>
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
<string name="appTitle">Seguridad</string>
|
|
||||||
<string name="error">En estos momentos, la acción no es compatible.</string>
|
|
||||||
<string name="title">Acción no compatible</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
<string name="appTitle">Secours</string>
|
|
||||||
<string name="error">Cette action n\'est pas actuellement prise en charge.</string>
|
|
||||||
<string name="title">Action non prise en charge</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
<string name="appTitle">Fallback</string>
|
|
||||||
<string name="error">L'azione non è attualmente supportata.</string>
|
|
||||||
<string name="title">Azione non supportata</string>
|
|
||||||
</resources>
|
|
||||||
7
apps/Fallback/res/values-ja/strings.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<string name="appTitle">"Fallback"</string>
|
||||||
|
<string name="title">"サポートされていない操作"</string>
|
||||||
|
<string name="error">"現在サポートされていない操作です。"</string>
|
||||||
|
</resources>
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
<string name="appTitle">還原</string>
|
|
||||||
<string name="error">目前不支援此動作。</string>
|
|
||||||
<string name="title">不支援的動作</string>
|
|
||||||
</resources>
|
|
||||||
@@ -15,7 +15,11 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
|
<!-- Name of the fallback application. It's used only on the SDK when applications from
|
||||||
|
real phones aren't available. -->
|
||||||
<string name="appTitle">Fallback</string>
|
<string name="appTitle">Fallback</string>
|
||||||
|
<!-- Dialog title informing the user that the requested action is not supported -->
|
||||||
<string name="title">Unsupported action</string>
|
<string name="title">Unsupported action</string>
|
||||||
|
<!-- Dialog content informing the user that the requested action is not supported -->
|
||||||
<string name="error">That action is not currently supported.</string>
|
<string name="error">That action is not currently supported.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
LOCAL_PATH:= $(call my-dir)
|
LOCAL_PATH:= $(call my-dir)
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE_TAGS := samples
|
LOCAL_MODULE_TAGS := foo
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(call all-subdir-java-files)
|
LOCAL_SRC_FILES := $(call all-subdir-java-files)
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.android.sdksetup">
|
package="com.android.sdksetup">
|
||||||
|
|
||||||
<!-- For miscellaneous settings -->
|
<!-- For miscellaneous secure settings -->
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
|
||||||
|
|
||||||
<application>
|
<application>
|
||||||
<activity android:name="DefaultActivity"
|
<activity android:name="DefaultActivity"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import android.content.ComponentName;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings.System;
|
import android.provider.Settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entry point for SDK SetupWizard.
|
* Entry point for SDK SetupWizard.
|
||||||
@@ -34,16 +34,16 @@ public class DefaultActivity extends Activity {
|
|||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
|
||||||
// Add a persistent setting to allow other apps to know the device has been provisioned.
|
// Add a persistent setting to allow other apps to know the device has been provisioned.
|
||||||
System.putInt(getContentResolver(), System.DEVICE_PROVISIONED, 1);
|
Settings.Secure.putInt(getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 1);
|
||||||
|
|
||||||
// Enable the GPS.
|
// Enable the GPS.
|
||||||
// Not needed since this SDK will contain the Settings app.
|
// Not needed since this SDK will contain the Settings app.
|
||||||
LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
|
LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
|
||||||
System.putString(getContentResolver(), System.LOCATION_PROVIDERS_ALLOWED, LocationManager.GPS_PROVIDER);
|
Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, LocationManager.GPS_PROVIDER);
|
||||||
locationManager.updateProviders();
|
locationManager.updateProviders();
|
||||||
|
|
||||||
// enable install from non market
|
// enable install from non market
|
||||||
System.putInt(getContentResolver(), System.INSTALL_NON_MARKET_APPS, 1);
|
Settings.Secure.putInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 1);
|
||||||
|
|
||||||
// remove this activity from the package manager.
|
// remove this activity from the package manager.
|
||||||
PackageManager pm = getPackageManager();
|
PackageManager pm = getPackageManager();
|
||||||
|
|||||||
10
apps/SpareParts/Android.mk
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
LOCAL_PATH:= $(call my-dir)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE_TAGS := eng development
|
||||||
|
|
||||||
|
LOCAL_SRC_FILES := $(call all-subdir-java-files)
|
||||||
|
|
||||||
|
LOCAL_PACKAGE_NAME := SpareParts
|
||||||
|
|
||||||
|
include $(BUILD_PACKAGE)
|
||||||
35
apps/SpareParts/AndroidManifest.xml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2008 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.android.spare_parts">
|
||||||
|
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
|
|
||||||
|
<application android:label="@string/app_label"
|
||||||
|
android:icon="@drawable/app_icon">
|
||||||
|
|
||||||
|
<activity android:name="SpareParts">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
</application>
|
||||||
|
</manifest>
|
||||||
BIN
apps/SpareParts/res/drawable/app_icon.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
51
apps/SpareParts/res/layout/spare_parts.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/Settings/assets/res/any/layout/keyboard_version.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<Spinner android:id="@+id/window_animation_scale"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true">
|
||||||
|
</Spinner>
|
||||||
|
|
||||||
|
<Spinner android:id="@+id/transition_animation_scale"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/window_animation_scale"
|
||||||
|
android:layout_alignParentLeft="true">
|
||||||
|
</Spinner>
|
||||||
|
|
||||||
|
<CheckBox android:id="@+id/show_maps_compass"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/transition_animation_scale"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:text="@string/development_settings_show_maps_compass_text" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
68
apps/SpareParts/res/values/arrays.xml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2007 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<string-array name="entries_animations">
|
||||||
|
<item>Off</item>
|
||||||
|
<item>Fast</item>
|
||||||
|
<item>Normal</item>
|
||||||
|
<item>Slow</item>
|
||||||
|
<item>Very Slow</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entryvalues_animations">
|
||||||
|
<item>0.0</item>
|
||||||
|
<item>0.5</item>
|
||||||
|
<item>1.0</item>
|
||||||
|
<item>1.5</item>
|
||||||
|
<item>2.0</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entries_font_size">
|
||||||
|
<item>Extremely Small</item>
|
||||||
|
<item>Extra Small</item>
|
||||||
|
<item>Small</item>
|
||||||
|
<item>Normal</item>
|
||||||
|
<item>Large</item>
|
||||||
|
<item>Extra Large</item>
|
||||||
|
<item>Extremely Large</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entryvalues_font_size">
|
||||||
|
<item>0.70</item>
|
||||||
|
<item>0.85</item>
|
||||||
|
<item>0.95</item>
|
||||||
|
<item>1.0</item>
|
||||||
|
<item>1.05</item>
|
||||||
|
<item>1.15</item>
|
||||||
|
<item>1.30</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entries_end_button">
|
||||||
|
<item>Nothing</item>
|
||||||
|
<item>Go to home</item>
|
||||||
|
<item>Go to sleep</item>
|
||||||
|
<item>Home, then sleep</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entryvalues_end_button">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
<item>3</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
||||||
52
apps/SpareParts/res/values/strings.xml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/strings.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<string name="app_label">Spare Parts</string>
|
||||||
|
|
||||||
|
<string name="general_title">General</string>
|
||||||
|
|
||||||
|
<string name="title_window_animations">Window animations</string>
|
||||||
|
<string name="summary_window_animations">Speed of animations in individual windows</string>
|
||||||
|
<string name="dialog_title_window_animations">Select window speed</string>
|
||||||
|
|
||||||
|
<string name="title_transition_animations">Transition animations</string>
|
||||||
|
<string name="summary_transition_animations">Speed of animations moving between screens</string>
|
||||||
|
<string name="dialog_title_transition_animations">Select transition speed</string>
|
||||||
|
|
||||||
|
<string name="title_font_size">Font size</string>
|
||||||
|
<string name="summary_font_size">Overall size of fonts</string>
|
||||||
|
<string name="dialog_title_font_size">Select font size</string>
|
||||||
|
|
||||||
|
<string name="title_end_button">End button behavior</string>
|
||||||
|
<string name="summary_end_button">Select End (red) button action</string>
|
||||||
|
<string name="dialog_title_end_button">Select End button</string>
|
||||||
|
|
||||||
|
<string name="title_accelerometer">Display rotation</string>
|
||||||
|
<string name="summary_on_accelerometer">Display rotates from orientation</string>
|
||||||
|
<string name="summary_off_accelerometer">Display rotates when lid is open</string>
|
||||||
|
|
||||||
|
<string name="applications_title">Applications</string>
|
||||||
|
|
||||||
|
<string name="title_maps_compass">Show compass in Maps</string>
|
||||||
|
<string name="summary_on_maps_compass">Compass is displayed in Maps</string>
|
||||||
|
<string name="summary_off_maps_compass">Compass is not displayed in Maps</string>
|
||||||
|
|
||||||
|
<string name="development_settings_show_maps_compass_text">Show compass in Maps</string>
|
||||||
|
</resources>
|
||||||
75
apps/SpareParts/res/xml/spare_parts.xml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
* Copyright 2008, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/general_title">
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="window_animations"
|
||||||
|
android:title="@string/title_window_animations"
|
||||||
|
android:summary="@string/summary_window_animations"
|
||||||
|
android:entries="@array/entries_animations"
|
||||||
|
android:entryValues="@array/entryvalues_animations"
|
||||||
|
android:dialogTitle="@string/dialog_title_window_animations" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="transition_animations"
|
||||||
|
android:title="@string/title_transition_animations"
|
||||||
|
android:summary="@string/summary_transition_animations"
|
||||||
|
android:entries="@array/entries_animations"
|
||||||
|
android:entryValues="@array/entryvalues_animations"
|
||||||
|
android:dialogTitle="@string/dialog_title_transition_animations" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="font_size"
|
||||||
|
android:title="@string/title_font_size"
|
||||||
|
android:summary="@string/summary_font_size"
|
||||||
|
android:entries="@array/entries_font_size"
|
||||||
|
android:entryValues="@array/entryvalues_font_size"
|
||||||
|
android:dialogTitle="@string/dialog_title_font_size" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="end_button"
|
||||||
|
android:title="@string/title_end_button"
|
||||||
|
android:summary="@string/summary_end_button"
|
||||||
|
android:entries="@array/entries_end_button"
|
||||||
|
android:entryValues="@array/entryvalues_end_button"
|
||||||
|
android:dialogTitle="@string/dialog_title_end_button" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="accelerometer"
|
||||||
|
android:title="@string/title_accelerometer"
|
||||||
|
android:summaryOn="@string/summary_on_accelerometer"
|
||||||
|
android:summaryOff="@string/summary_off_accelerometer"/>
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/applications_title">
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="maps_compass"
|
||||||
|
android:title="@string/title_maps_compass"
|
||||||
|
android:summaryOn="@string/summary_on_maps_compass"
|
||||||
|
android:summaryOff="@string/summary_off_maps_compass"/>
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
||||||
207
apps/SpareParts/src/com/android/spare_parts/SpareParts.java
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
/* //device/apps/Settings/src/com/android/settings/Keyguard.java
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.spare_parts;
|
||||||
|
|
||||||
|
import android.app.ActivityManagerNative;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceManager;
|
||||||
|
import android.preference.CheckBoxPreference;
|
||||||
|
import android.preference.ListPreference;
|
||||||
|
import android.preference.Preference;
|
||||||
|
import android.preference.PreferenceActivity;
|
||||||
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.provider.Settings;
|
||||||
|
import android.provider.Settings.SettingNotFoundException;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
|
||||||
|
public class SpareParts extends PreferenceActivity
|
||||||
|
implements Preference.OnPreferenceChangeListener,
|
||||||
|
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
private static final String TAG = "SpareParts";
|
||||||
|
|
||||||
|
private static final String WINDOW_ANIMATIONS_PREF = "window_animations";
|
||||||
|
private static final String TRANSITION_ANIMATIONS_PREF = "transition_animations";
|
||||||
|
private static final String FONT_SIZE_PREF = "font_size";
|
||||||
|
private static final String END_BUTTON_PREF = "end_button";
|
||||||
|
private static final String ACCELEROMETER_PREF = "accelerometer";
|
||||||
|
private static final String MAPS_COMPASS_PREF = "maps_compass";
|
||||||
|
|
||||||
|
private final Configuration mCurConfig = new Configuration();
|
||||||
|
|
||||||
|
private ListPreference mWindowAnimationsPref;
|
||||||
|
private ListPreference mTransitionAnimationsPref;
|
||||||
|
private ListPreference mFontSizePref;
|
||||||
|
private ListPreference mEndButtonPref;
|
||||||
|
private CheckBoxPreference mAccelerometerPref;
|
||||||
|
private CheckBoxPreference mShowMapsCompassPref;
|
||||||
|
|
||||||
|
private IWindowManager mWindowManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle icicle) {
|
||||||
|
super.onCreate(icicle);
|
||||||
|
addPreferencesFromResource(R.xml.spare_parts);
|
||||||
|
|
||||||
|
PreferenceScreen prefSet = getPreferenceScreen();
|
||||||
|
|
||||||
|
mWindowAnimationsPref = (ListPreference) prefSet.findPreference(WINDOW_ANIMATIONS_PREF);
|
||||||
|
mWindowAnimationsPref.setOnPreferenceChangeListener(this);
|
||||||
|
mTransitionAnimationsPref = (ListPreference) prefSet.findPreference(TRANSITION_ANIMATIONS_PREF);
|
||||||
|
mTransitionAnimationsPref.setOnPreferenceChangeListener(this);
|
||||||
|
mFontSizePref = (ListPreference) prefSet.findPreference(FONT_SIZE_PREF);
|
||||||
|
mFontSizePref.setOnPreferenceChangeListener(this);
|
||||||
|
mEndButtonPref = (ListPreference) prefSet.findPreference(END_BUTTON_PREF);
|
||||||
|
mEndButtonPref.setOnPreferenceChangeListener(this);
|
||||||
|
mAccelerometerPref = (CheckBoxPreference) prefSet.findPreference(ACCELEROMETER_PREF);
|
||||||
|
mShowMapsCompassPref = (CheckBoxPreference) prefSet.findPreference(MAPS_COMPASS_PREF);
|
||||||
|
|
||||||
|
mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
|
||||||
|
|
||||||
|
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateToggles() {
|
||||||
|
try {
|
||||||
|
mAccelerometerPref.setChecked(Settings.System.getInt(
|
||||||
|
getContentResolver(),
|
||||||
|
Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
|
||||||
|
Context c = createPackageContext("com.google.android.apps.maps", 0);
|
||||||
|
mShowMapsCompassPref.setChecked(c.getSharedPreferences("extra-features", MODE_WORLD_READABLE)
|
||||||
|
.getBoolean("compass", false));
|
||||||
|
} catch (NameNotFoundException e) {
|
||||||
|
Log.w(TAG, "Failed reading maps compass");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onPreferenceChange(Preference preference, Object objValue) {
|
||||||
|
if (preference == mWindowAnimationsPref) {
|
||||||
|
writeAnimationPreference(0, objValue);
|
||||||
|
} else if (preference == mTransitionAnimationsPref) {
|
||||||
|
writeAnimationPreference(1, objValue);
|
||||||
|
} else if (preference == mFontSizePref) {
|
||||||
|
writeFontSizePreference(objValue);
|
||||||
|
} else if (preference == mEndButtonPref) {
|
||||||
|
writeEndButtonPreference(objValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
// always let the preference setting proceed.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeAnimationPreference(int which, Object objValue) {
|
||||||
|
try {
|
||||||
|
float val = Float.parseFloat(objValue.toString());
|
||||||
|
mWindowManager.setAnimationScale(which, val);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeFontSizePreference(Object objValue) {
|
||||||
|
try {
|
||||||
|
mCurConfig.fontScale = Float.parseFloat(objValue.toString());
|
||||||
|
ActivityManagerNative.getDefault().updateConfiguration(mCurConfig);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeEndButtonPreference(Object objValue) {
|
||||||
|
try {
|
||||||
|
int val = Integer.parseInt(objValue.toString());
|
||||||
|
Settings.System.putInt(getContentResolver(),
|
||||||
|
Settings.System.END_BUTTON_BEHAVIOR, val);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int floatToIndex(float val, int resid) {
|
||||||
|
String[] indices = getResources().getStringArray(resid);
|
||||||
|
float lastVal = Float.parseFloat(indices[0]);
|
||||||
|
for (int i=1; i<indices.length; i++) {
|
||||||
|
float thisVal = Float.parseFloat(indices[i]);
|
||||||
|
if (val < (lastVal + (thisVal-lastVal)*.5f)) {
|
||||||
|
return i-1;
|
||||||
|
}
|
||||||
|
lastVal = thisVal;
|
||||||
|
}
|
||||||
|
return indices.length-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readAnimationPreference(int which, ListPreference pref) {
|
||||||
|
try {
|
||||||
|
float scale = mWindowManager.getAnimationScale(which);
|
||||||
|
pref.setValueIndex(floatToIndex(scale,
|
||||||
|
R.array.entryvalues_animations));
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readFontSizePreference(ListPreference pref) {
|
||||||
|
try {
|
||||||
|
mCurConfig.updateFrom(
|
||||||
|
ActivityManagerNative.getDefault().getConfiguration());
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
}
|
||||||
|
pref.setValueIndex(floatToIndex(mCurConfig.fontScale,
|
||||||
|
R.array.entryvalues_font_size));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readEndButtonPreference(ListPreference pref) {
|
||||||
|
try {
|
||||||
|
pref.setValueIndex(Settings.System.getInt(getContentResolver(),
|
||||||
|
Settings.System.END_BUTTON_BEHAVIOR));
|
||||||
|
} catch (SettingNotFoundException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||||
|
if (ACCELEROMETER_PREF.equals(key)) {
|
||||||
|
Settings.System.putInt(getContentResolver(),
|
||||||
|
Settings.System.ACCELEROMETER_ROTATION,
|
||||||
|
mAccelerometerPref.isChecked() ? 1 : 0);
|
||||||
|
} else if (MAPS_COMPASS_PREF.equals(key)) {
|
||||||
|
try {
|
||||||
|
Context c = createPackageContext("com.google.android.apps.maps", 0);
|
||||||
|
c.getSharedPreferences("extra-features", MODE_WORLD_WRITEABLE)
|
||||||
|
.edit()
|
||||||
|
.putBoolean("compass", mShowMapsCompassPref.isChecked())
|
||||||
|
.commit();
|
||||||
|
} catch (NameNotFoundException e) {
|
||||||
|
Log.w(TAG, "Failed setting maps compass");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
readAnimationPreference(0, mWindowAnimationsPref);
|
||||||
|
readAnimationPreference(1, mTransitionAnimationsPref);
|
||||||
|
readFontSizePreference(mFontSizePref);
|
||||||
|
readEndButtonPreference(mEndButtonPref);
|
||||||
|
updateToggles();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.term">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.term">
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
<application android:icon="@drawable/app_terminal"
|
<application android:icon="@drawable/app_terminal"
|
||||||
android:label="Terminal Emulator">
|
android:label="@string/application_terminal">
|
||||||
<activity android:name="Term"
|
<activity android:name="Term"
|
||||||
android:theme="@style/Theme"
|
android:theme="@style/Theme"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
@@ -11,5 +10,6 @@
|
|||||||
<category android:name="android.intent.category.TEST" />
|
<category android:name="android.intent.category.TEST" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity android:name="TermPreferences"/>
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
27
apps/Term/res/menu/main.xml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:id="@+id/menu_preferences"
|
||||||
|
android:title="@string/preferences" />
|
||||||
|
<item android:id="@+id/menu_reset"
|
||||||
|
android:title="@string/reset" />
|
||||||
|
<item android:id="@+id/menu_send_email"
|
||||||
|
android:title="@string/send_email" />
|
||||||
|
<item android:id="@+id/menu_special_keys"
|
||||||
|
android:title="@string/special_keys" />
|
||||||
|
</menu>
|
||||||
73
apps/Term/res/values/arrays.xml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2007 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<string-array name="entries_fontsize_preference">
|
||||||
|
<item>4 x 8 pixels</item>
|
||||||
|
<item>6 pt</item>
|
||||||
|
<item>7 pt</item>
|
||||||
|
<item>8 pt</item>
|
||||||
|
<item>9 pt</item>
|
||||||
|
<item>10 pt</item>
|
||||||
|
<item>12 pt</item>
|
||||||
|
<item>14 pt</item>
|
||||||
|
<item>16 pt</item>
|
||||||
|
<item>20 pt</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Do not localize entryvalues -->
|
||||||
|
<string-array name="entryvalues_fontsize_preference">
|
||||||
|
<item>0</item>
|
||||||
|
<item>6</item>
|
||||||
|
<item>7</item>
|
||||||
|
<item>8</item>
|
||||||
|
<item>9</item>
|
||||||
|
<item>10</item>
|
||||||
|
<item>12</item>
|
||||||
|
<item>14</item>
|
||||||
|
<item>16</item>
|
||||||
|
<item>20</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entries_color_preference">
|
||||||
|
<item>Black text on white</item>
|
||||||
|
<item>White text on black</item>
|
||||||
|
<item>White text on blue</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Do not localize entryvalues -->
|
||||||
|
<string-array name="entryvalues_color_preference">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="entries_controlkey_preference">
|
||||||
|
<item>Jog ball</item>
|
||||||
|
<item>\@ key</item>
|
||||||
|
<item>Left Alt key</item>
|
||||||
|
<item>Right Alt key</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Do not localize entryvalues -->
|
||||||
|
<string-array name="entryvalues_controlkey_preference">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
<item>3</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
||||||
55
apps/Term/res/values/strings.xml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<string name="application_terminal">Terminal Emulator</string>
|
||||||
|
<string name="preferences">Preferences</string>
|
||||||
|
<string name="reset">Reset term</string>
|
||||||
|
<string name="send_email">Email to</string>
|
||||||
|
<string name="special_keys">Special keys</string>
|
||||||
|
|
||||||
|
<!-- Preference dialog -->
|
||||||
|
<string name="text_preferences">Text</string>
|
||||||
|
|
||||||
|
<string name="title_fontsize_preference">Font size</string>
|
||||||
|
<string name="summary_fontsize_preference">Choose character height in pixels.</string>
|
||||||
|
<string name="dialog_title_fontsize_preference">Font size</string>
|
||||||
|
|
||||||
|
<string name="title_color_preference">Colors</string>
|
||||||
|
<string name="summary_color_preference">Choose text color.</string>
|
||||||
|
<string name="dialog_title_color_preference">Text color</string>
|
||||||
|
|
||||||
|
<string name="keyboard_preferences">Keyboard</string>
|
||||||
|
<string name="title_controlkey_preference">Control key</string>
|
||||||
|
<string name="summary_controlkey_preference">Choose control key.</string>
|
||||||
|
<string name="dialog_title_controlkey_preference">Control key</string>
|
||||||
|
|
||||||
|
<string name="shell_preferences">Shell</string>
|
||||||
|
<string name="title_shell_preference">Command line</string>
|
||||||
|
<string name="summary_shell_preference">Specify the shell command line.</string>
|
||||||
|
<string name="dialog_title_shell_preference">Shell</string>
|
||||||
|
|
||||||
|
<string name="title_initialcommand_preference">Initial command</string>
|
||||||
|
<string name="summary_initialcommand_preference">Sent to the shell when it starts.</string>
|
||||||
|
<string name="dialog_title_initialcommand_preference">Initial Command</string>
|
||||||
|
|
||||||
|
<!-- Don't localize these default values -->
|
||||||
|
<string name="default_value_fontsize_preference">10</string>
|
||||||
|
<string name="default_value_color_preference">2</string>
|
||||||
|
<string name="default_value_controlkey_preference">0</string>
|
||||||
|
<string name="default_value_shell_preference">/system/bin/sh -</string>
|
||||||
|
<string name="default_value_initialcommand_preference">export PATH=/data/local/bin:$PATH</string>
|
||||||
|
</resources>
|
||||||
73
apps/Term/res/xml/preferences.xml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2008 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<PreferenceScreen
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/text_preferences">
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="fontsize"
|
||||||
|
android:defaultValue="@string/default_value_fontsize_preference"
|
||||||
|
android:title="@string/title_fontsize_preference"
|
||||||
|
android:summary="@string/summary_fontsize_preference"
|
||||||
|
android:entries="@array/entries_fontsize_preference"
|
||||||
|
android:entryValues="@array/entryvalues_fontsize_preference"
|
||||||
|
android:dialogTitle="@string/dialog_title_fontsize_preference" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="color"
|
||||||
|
android:defaultValue="@string/default_value_color_preference"
|
||||||
|
android:title="@string/title_color_preference"
|
||||||
|
android:summary="@string/summary_color_preference"
|
||||||
|
android:entries="@array/entries_color_preference"
|
||||||
|
android:entryValues="@array/entryvalues_color_preference"
|
||||||
|
android:dialogTitle="@string/dialog_title_color_preference" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/keyboard_preferences">
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:key="controlkey"
|
||||||
|
android:defaultValue="@string/default_value_controlkey_preference"
|
||||||
|
android:title="@string/title_controlkey_preference"
|
||||||
|
android:summary="@string/summary_controlkey_preference"
|
||||||
|
android:entries="@array/entries_controlkey_preference"
|
||||||
|
android:entryValues="@array/entryvalues_controlkey_preference"
|
||||||
|
android:dialogTitle="@string/dialog_title_controlkey_preference" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/shell_preferences">
|
||||||
|
|
||||||
|
<EditTextPreference
|
||||||
|
android:key="shell"
|
||||||
|
android:defaultValue="@string/default_value_shell_preference"
|
||||||
|
android:title="@string/title_shell_preference"
|
||||||
|
android:summary="@string/summary_shell_preference"
|
||||||
|
android:dialogTitle="@string/dialog_title_shell_preference" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:key="initialcommand"
|
||||||
|
android:defaultValue="@string/default_value_initialcommand_preference"
|
||||||
|
android:title="@string/title_initialcommand_preference"
|
||||||
|
android:summary="@string/summary_initialcommand_preference"
|
||||||
|
android:dialogTitle="@string/dialog_title_initialcommand_preference" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
</PreferenceScreen>
|
||||||
@@ -20,16 +20,13 @@ import android.app.Activity;
|
|||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.ColorFilter;
|
|
||||||
import android.graphics.ColorMatrix;
|
|
||||||
import android.graphics.LightingColorFilter;
|
|
||||||
import android.graphics.ColorMatrixColorFilter;
|
import android.graphics.ColorMatrixColorFilter;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
@@ -50,14 +47,13 @@ import android.view.KeyEvent;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.SubMenu;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A terminal emulator activity.
|
* A terminal emulator activity.
|
||||||
@@ -65,12 +61,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class Term extends Activity {
|
public class Term extends Activity {
|
||||||
|
|
||||||
/**
|
|
||||||
* Set to true to configure a test mode where the terminal emulator talks
|
|
||||||
* directly to a test application, rather than to a shell.
|
|
||||||
*/
|
|
||||||
public static final boolean TEST_MODE = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set to true to log each character received from the remote process to the
|
* Set to true to log each character received from the remote process to the
|
||||||
* android log, which makes it easier to debug some kinds of problems with
|
* android log, which makes it easier to debug some kinds of problems with
|
||||||
@@ -99,6 +89,8 @@ public class Term extends Activity {
|
|||||||
*/
|
*/
|
||||||
private FileDescriptor mTermFd;
|
private FileDescriptor mTermFd;
|
||||||
|
|
||||||
|
private boolean mShellRunning;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to send data to the remote process.
|
* Used to send data to the remote process.
|
||||||
*/
|
*/
|
||||||
@@ -110,117 +102,262 @@ public class Term extends Activity {
|
|||||||
*/
|
*/
|
||||||
private TermKeyListener mKeyListener;
|
private TermKeyListener mKeyListener;
|
||||||
|
|
||||||
private boolean mWhiteOnBlue = true;
|
|
||||||
|
|
||||||
private float mRotation;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of our emulator view in the view resource.
|
* The name of our emulator view in the view resource.
|
||||||
*/
|
*/
|
||||||
private static final int EMULATOR_VIEW = R.id.emulatorView;
|
private static final int EMULATOR_VIEW = R.id.emulatorView;
|
||||||
|
|
||||||
// Menu IDs:
|
private int mFontSize = 9;
|
||||||
|
private int mColorId = 2;
|
||||||
|
private int mControlKeyId = 0;
|
||||||
|
|
||||||
private static final int MENU_GROUP_NONE = Menu.FIRST;
|
private static final String FONTSIZE_KEY = "fontsize";
|
||||||
private static final int MENU_SCREEN_SIZE_ID = 0;
|
private static final String COLOR_KEY = "color";
|
||||||
private static final int MENU_SCREEN_SIZE_ITEM_ID = 1;
|
private static final String CONTROLKEY_KEY = "controlkey";
|
||||||
private static final int MENU_SCREEN_SIZE_ITEM_COUNT = 10;
|
private static final String SHELL_KEY = "shell";
|
||||||
private static final int MENU_SCREEN_SIZE_ITEM_ID_END =
|
private static final String INITIALCOMMAND_KEY = "initialcommand";
|
||||||
MENU_SCREEN_SIZE_ITEM_ID + MENU_SCREEN_SIZE_ITEM_COUNT;
|
|
||||||
|
|
||||||
private static final int MENU_WHITE_ON_BLUE_ID =
|
|
||||||
MENU_SCREEN_SIZE_ITEM_ID_END;
|
|
||||||
private static final int MENU_RESET_TERMINAL_ID =
|
|
||||||
MENU_SCREEN_SIZE_ITEM_ID_END + 1;
|
|
||||||
private static final int MENU_EMAIL_TRANSCRIPT_ID =
|
|
||||||
MENU_SCREEN_SIZE_ITEM_ID_END + 2;
|
|
||||||
|
|
||||||
private static final int MENU_DOCUMENT_KEYS_ID =
|
|
||||||
MENU_EMAIL_TRANSCRIPT_ID + 1;
|
|
||||||
|
|
||||||
private static final String[] MENU_SCREEN_SIZE_LABELS = {
|
|
||||||
"4 x 8", "6 pt", "7 pt", "8 pt", "9 pt", "10 pt", "12 pt",
|
|
||||||
"14 pt", "16 pt", "20 pt"};
|
|
||||||
|
|
||||||
private static final int[] TEXT_SIZE = {0, 6, 7, 8, 9, 10, 12, 14, 16, 20};
|
|
||||||
|
|
||||||
private int mFontSelection = 3;
|
|
||||||
|
|
||||||
private static final String FONT_SELECTION_KEY = "font selection";
|
|
||||||
private static final String ROTATION_KEY = "rotation";
|
|
||||||
private static final String WHITE_ON_BLUE_KEY = "whiteOnBlue";
|
|
||||||
|
|
||||||
public static final int WHITE = 0xffffffff;
|
public static final int WHITE = 0xffffffff;
|
||||||
public static final int BLACK = 0xff000000;
|
public static final int BLACK = 0xff000000;
|
||||||
public static final int BLUE = 0xff344ebd;
|
public static final int BLUE = 0xff344ebd;
|
||||||
|
|
||||||
|
private static final int[][] COLOR_SCHEMES = {
|
||||||
|
{BLACK, WHITE}, {WHITE, BLACK}, {WHITE, BLUE}};
|
||||||
|
|
||||||
|
private static final int[] CONTROL_KEY_SCHEMES = {
|
||||||
|
KeyEvent.KEYCODE_DPAD_CENTER,
|
||||||
|
KeyEvent.KEYCODE_AT,
|
||||||
|
KeyEvent.KEYCODE_ALT_LEFT,
|
||||||
|
KeyEvent.KEYCODE_ALT_RIGHT
|
||||||
|
};
|
||||||
|
private static final String[] CONTROL_KEY_NAME = {
|
||||||
|
"Ball", "@", "Left-Alt", "Right-Alt"
|
||||||
|
};
|
||||||
|
|
||||||
|
private int mControlKeyCode;
|
||||||
|
|
||||||
|
private final static String DEFAULT_SHELL = "/system/bin/sh -";
|
||||||
|
private String mShell;
|
||||||
|
|
||||||
|
private final static String DEFAULT_INITIAL_COMMAND =
|
||||||
|
"export PATH=/data/local/bin:$PATH";
|
||||||
|
private String mInitialCommand;
|
||||||
|
|
||||||
private SharedPreferences mPrefs;
|
private SharedPreferences mPrefs;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
Log.e(Term.LOG_TAG, "onCreate");
|
Log.e(Term.LOG_TAG, "onCreate");
|
||||||
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
mPrefs.registerOnSharedPreferenceChangeListener(
|
||||||
|
new SharedPreferences.OnSharedPreferenceChangeListener(){
|
||||||
|
|
||||||
|
public void onSharedPreferenceChanged(
|
||||||
|
SharedPreferences sharedPreferences, String key) {
|
||||||
|
readPrefs();
|
||||||
|
updatePrefs();
|
||||||
|
}});
|
||||||
|
readPrefs();
|
||||||
|
|
||||||
setContentView(R.layout.term_activity);
|
setContentView(R.layout.term_activity);
|
||||||
|
|
||||||
mEmulatorView = (EmulatorView) findViewById(EMULATOR_VIEW);
|
mEmulatorView = (EmulatorView) findViewById(EMULATOR_VIEW);
|
||||||
|
|
||||||
|
startListening();
|
||||||
|
|
||||||
|
mKeyListener = new TermKeyListener();
|
||||||
|
|
||||||
|
updatePrefs();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startListening() {
|
||||||
int[] processId = new int[1];
|
int[] processId = new int[1];
|
||||||
|
|
||||||
if (TEST_MODE) {
|
createSubprocess(processId);
|
||||||
// This is a vt100 test suite.
|
mShellRunning = true;
|
||||||
mTermFd = Exec.createSubprocess("/sbin/vttest", null, null);
|
|
||||||
} else {
|
|
||||||
// This is the standard Android shell.
|
|
||||||
mTermFd = Exec.createSubprocess("/system/bin/sh", "-", null,
|
|
||||||
processId);
|
|
||||||
}
|
|
||||||
|
|
||||||
final int procId = processId[0];
|
final int procId = processId[0];
|
||||||
final Term me = this;
|
|
||||||
|
|
||||||
final Handler handler = new Handler() {
|
final Handler handler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
me.finish();
|
mShellRunning = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Runnable watchForDeath = new Runnable() {
|
Runnable watchForDeath = new Runnable() {
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.e(Term.LOG_TAG, "waiting for: " + procId);
|
Log.i(Term.LOG_TAG, "waiting for: " + procId);
|
||||||
int result = Exec.waitFor(procId);
|
int result = Exec.waitFor(procId);
|
||||||
Log.e(Term.LOG_TAG, "Subprocess exited: " + result);
|
Log.i(Term.LOG_TAG, "Subprocess exited: " + result);
|
||||||
handler.sendEmptyMessage(0);
|
handler.sendEmptyMessage(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
Thread watcher = new Thread(watchForDeath);
|
Thread watcher = new Thread(watchForDeath);
|
||||||
watcher.start();
|
watcher.start();
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
||||||
mFontSelection = mPrefs.getInt(FONT_SELECTION_KEY, mFontSelection);
|
|
||||||
mWhiteOnBlue = mPrefs.getBoolean(WHITE_ON_BLUE_KEY, mWhiteOnBlue);
|
|
||||||
mRotation = mPrefs.getFloat(ROTATION_KEY, mRotation);
|
|
||||||
|
|
||||||
mTermOut = new FileOutputStream(mTermFd);
|
mTermOut = new FileOutputStream(mTermFd);
|
||||||
|
|
||||||
mEmulatorView.initialize(mTermFd, mTermOut);
|
mEmulatorView.initialize(mTermFd, mTermOut);
|
||||||
mEmulatorView.setTextSize(TEXT_SIZE[mFontSelection]);
|
|
||||||
mEmulatorView.setRotation(mRotation);
|
|
||||||
setColors();
|
|
||||||
|
|
||||||
mKeyListener = new TermKeyListener();
|
sendInitialCommand();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendInitialCommand() {
|
||||||
|
String initialCommand = mInitialCommand;
|
||||||
|
if (initialCommand == null) {
|
||||||
|
initialCommand = DEFAULT_INITIAL_COMMAND;
|
||||||
|
}
|
||||||
|
if (initialCommand.length() > 0) {
|
||||||
|
write(initialCommand + '\r');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void restart() {
|
||||||
|
startActivity(getIntent());
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void write(String data) {
|
||||||
|
try {
|
||||||
|
mTermOut.write(data.getBytes());
|
||||||
|
mTermOut.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore exception
|
||||||
|
// We don't really care if the receiver isn't listening.
|
||||||
|
// We just make a best effort to answer the query.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createSubprocess(int[] processId) {
|
||||||
|
String shell = mShell;
|
||||||
|
if (shell == null) {
|
||||||
|
shell = DEFAULT_SHELL;
|
||||||
|
}
|
||||||
|
ArrayList<String> args = parse(shell);
|
||||||
|
String arg0 = args.get(0);
|
||||||
|
String arg1 = null;
|
||||||
|
String arg2 = null;
|
||||||
|
if (args.size() >= 2) {
|
||||||
|
arg1 = args.get(1);
|
||||||
|
}
|
||||||
|
if (args.size() >= 3) {
|
||||||
|
arg2 = args.get(2);
|
||||||
|
}
|
||||||
|
mTermFd = Exec.createSubprocess(arg0, arg1, arg2, processId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<String> parse(String cmd) {
|
||||||
|
final int PLAIN = 0;
|
||||||
|
final int WHITESPACE = 1;
|
||||||
|
final int INQUOTE = 2;
|
||||||
|
int state = WHITESPACE;
|
||||||
|
ArrayList<String> result = new ArrayList<String>();
|
||||||
|
int cmdLen = cmd.length();
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 0; i < cmdLen; i++) {
|
||||||
|
char c = cmd.charAt(i);
|
||||||
|
if (state == PLAIN) {
|
||||||
|
if (Character.isWhitespace(c)) {
|
||||||
|
result.add(builder.toString());
|
||||||
|
builder.delete(0,builder.length());
|
||||||
|
state = WHITESPACE;
|
||||||
|
} else if (c == '"') {
|
||||||
|
state = INQUOTE;
|
||||||
|
} else {
|
||||||
|
builder.append(c);
|
||||||
|
}
|
||||||
|
} else if (state == WHITESPACE) {
|
||||||
|
if (Character.isWhitespace(c)) {
|
||||||
|
// do nothing
|
||||||
|
} else if (c == '"') {
|
||||||
|
state = INQUOTE;
|
||||||
|
} else {
|
||||||
|
state = PLAIN;
|
||||||
|
builder.append(c);
|
||||||
|
}
|
||||||
|
} else if (state == INQUOTE) {
|
||||||
|
if (c == '\\') {
|
||||||
|
if (i + 1 < cmdLen) {
|
||||||
|
i += 1;
|
||||||
|
builder.append(cmd.charAt(i));
|
||||||
|
}
|
||||||
|
} else if (c == '"') {
|
||||||
|
state = PLAIN;
|
||||||
|
} else {
|
||||||
|
builder.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (builder.length() > 0) {
|
||||||
|
result.add(builder.toString());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void readPrefs() {
|
||||||
|
mFontSize = readIntPref(FONTSIZE_KEY, mFontSize, 20);
|
||||||
|
mColorId = readIntPref(COLOR_KEY, mColorId, COLOR_SCHEMES.length - 1);
|
||||||
|
mControlKeyId = readIntPref(CONTROLKEY_KEY, mControlKeyId,
|
||||||
|
CONTROL_KEY_SCHEMES.length - 1);
|
||||||
|
{
|
||||||
|
String newShell = readStringPref(SHELL_KEY, mShell);
|
||||||
|
if ((newShell == null) || ! newShell.equals(mShell)) {
|
||||||
|
if (mShell != null) {
|
||||||
|
Log.i(Term.LOG_TAG, "New shell set. Restarting.");
|
||||||
|
restart();
|
||||||
|
}
|
||||||
|
mShell = newShell;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
String newInitialCommand = readStringPref(INITIALCOMMAND_KEY,
|
||||||
|
mInitialCommand);
|
||||||
|
if ((newInitialCommand == null)
|
||||||
|
|| ! newInitialCommand.equals(mInitialCommand)) {
|
||||||
|
if (mInitialCommand != null) {
|
||||||
|
Log.i(Term.LOG_TAG, "New initial command set. Restarting.");
|
||||||
|
restart();
|
||||||
|
}
|
||||||
|
mInitialCommand = newInitialCommand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updatePrefs() {
|
||||||
|
mEmulatorView.setTextSize(mFontSize);
|
||||||
|
setColors();
|
||||||
|
mControlKeyCode = CONTROL_KEY_SCHEMES[mControlKeyId];
|
||||||
|
}
|
||||||
|
|
||||||
|
private int readIntPref(String key, int defaultValue, int maxValue) {
|
||||||
|
int val;
|
||||||
|
try {
|
||||||
|
val = Integer.parseInt(
|
||||||
|
mPrefs.getString(key, Integer.toString(defaultValue)));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
val = defaultValue;
|
||||||
|
}
|
||||||
|
val = Math.max(0, Math.min(val, maxValue));
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String readStringPref(String key, String defaultValue) {
|
||||||
|
return mPrefs.getString(key, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
SharedPreferences.Editor e = mPrefs.edit();
|
SharedPreferences.Editor e = mPrefs.edit();
|
||||||
e.clear();
|
e.clear();
|
||||||
e.putInt(FONT_SELECTION_KEY, mFontSelection);
|
e.putString(FONTSIZE_KEY, Integer.toString(mFontSize));
|
||||||
e.putBoolean(WHITE_ON_BLUE_KEY, mWhiteOnBlue);
|
e.putString(COLOR_KEY, Integer.toString(mColorId));
|
||||||
e.putFloat(ROTATION_KEY, mRotation);
|
e.putString(CONTROLKEY_KEY, Integer.toString(mControlKeyId));
|
||||||
|
e.putString(SHELL_KEY, mShell);
|
||||||
|
e.putString(INITIALCOMMAND_KEY, mInitialCommand);
|
||||||
e.commit();
|
e.commit();
|
||||||
|
|
||||||
super.onPause();
|
super.onPause();
|
||||||
@@ -235,7 +372,9 @@ public class Term extends Activity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
if (isSystemKey(keyCode, event)) {
|
if (handleControlKey(keyCode, true)) {
|
||||||
|
return true;
|
||||||
|
} else if (isSystemKey(keyCode, event)) {
|
||||||
// Don't intercept the system keys
|
// Don't intercept the system keys
|
||||||
return super.onKeyDown(keyCode, event);
|
return super.onKeyDown(keyCode, event);
|
||||||
} else if (handleDPad(keyCode, true)) {
|
} else if (handleDPad(keyCode, true)) {
|
||||||
@@ -257,7 +396,9 @@ public class Term extends Activity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
||||||
if (isSystemKey(keyCode, event)) {
|
if (handleControlKey(keyCode, false)) {
|
||||||
|
return true;
|
||||||
|
} else if (isSystemKey(keyCode, event)) {
|
||||||
// Don't intercept the system keys
|
// Don't intercept the system keys
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.onKeyUp(keyCode, event);
|
||||||
} else if (handleDPad(keyCode, false)) {
|
} else if (handleDPad(keyCode, false)) {
|
||||||
@@ -268,44 +409,55 @@ public class Term extends Activity {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean handleControlKey(int keyCode, boolean down) {
|
||||||
|
if (keyCode == mControlKeyCode) {
|
||||||
|
mKeyListener.handleControlKey(down);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle dpad left-right-up-down events. Don't handle
|
* Handle dpad left-right-up-down events. Don't handle
|
||||||
* dpad-center, that's our control key.
|
* dpad-center, that's our control key.
|
||||||
* @param keyCode
|
* @param keyCode
|
||||||
* @param down
|
* @param down
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private boolean handleDPad(int keyCode, boolean down) {
|
private boolean handleDPad(int keyCode, boolean down) {
|
||||||
if (keyCode < KeyEvent.KEYCODE_DPAD_UP ||
|
if (keyCode < KeyEvent.KEYCODE_DPAD_UP ||
|
||||||
keyCode > KeyEvent.KEYCODE_DPAD_RIGHT) {
|
keyCode > KeyEvent.KEYCODE_DPAD_CENTER) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (down) {
|
if (down) {
|
||||||
try {
|
try {
|
||||||
char code;
|
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
||||||
switch (keyCode) {
|
mTermOut.write('\r');
|
||||||
case KeyEvent.KEYCODE_DPAD_UP:
|
|
||||||
code = 'A';
|
|
||||||
break;
|
|
||||||
case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
||||||
code = 'B';
|
|
||||||
break;
|
|
||||||
case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
||||||
code = 'D';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
||||||
code = 'C';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mTermOut.write(27); // ESC
|
|
||||||
if (mEmulatorView.getKeypadApplicationMode()) {
|
|
||||||
mTermOut.write('O');
|
|
||||||
} else {
|
} else {
|
||||||
mTermOut.write('[');
|
char code;
|
||||||
|
switch (keyCode) {
|
||||||
|
case KeyEvent.KEYCODE_DPAD_UP:
|
||||||
|
code = 'A';
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_DOWN:
|
||||||
|
code = 'B';
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_LEFT:
|
||||||
|
code = 'D';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
||||||
|
code = 'C';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mTermOut.write(27); // ESC
|
||||||
|
if (mEmulatorView.getKeypadApplicationMode()) {
|
||||||
|
mTermOut.write('O');
|
||||||
|
} else {
|
||||||
|
mTermOut.write('[');
|
||||||
|
}
|
||||||
|
mTermOut.write(code);
|
||||||
}
|
}
|
||||||
mTermOut.write(code);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// Ignore
|
// Ignore
|
||||||
}
|
}
|
||||||
@@ -319,82 +471,36 @@ public class Term extends Activity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
SubMenu screenSize = menu.addSubMenu(MENU_GROUP_NONE,
|
getMenuInflater().inflate(R.menu.main, menu);
|
||||||
MENU_SCREEN_SIZE_ID, 0, "Font Size");
|
|
||||||
String[] labels = MENU_SCREEN_SIZE_LABELS;
|
|
||||||
for (int i = 0; i < MENU_SCREEN_SIZE_ITEM_COUNT; i++) {
|
|
||||||
MenuItem item = screenSize.add(i, MENU_SCREEN_SIZE_ITEM_ID + i, 0,
|
|
||||||
labels[i]);
|
|
||||||
item.setCheckable(true);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
MenuItem item = menu.add(MENU_WHITE_ON_BLUE_ID, MENU_WHITE_ON_BLUE_ID,
|
|
||||||
0, "Toggle White on Blue");
|
|
||||||
}
|
|
||||||
menu.add(MENU_RESET_TERMINAL_ID, MENU_RESET_TERMINAL_ID,
|
|
||||||
0, "Reset Terminal");
|
|
||||||
menu.add(MENU_EMAIL_TRANSCRIPT_ID, MENU_EMAIL_TRANSCRIPT_ID,
|
|
||||||
0, "Email To...");
|
|
||||||
menu.add(MENU_DOCUMENT_KEYS_ID, MENU_DOCUMENT_KEYS_ID,
|
|
||||||
0, "Special keys...");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
|
||||||
super.onPrepareOptionsMenu(menu);
|
|
||||||
for (int i = 0; i < MENU_SCREEN_SIZE_ITEM_COUNT; i++) {
|
|
||||||
menu.findItem(MENU_SCREEN_SIZE_ITEM_ID + i).setChecked(i == mFontSelection);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
int id = item.getItemId();
|
int id = item.getItemId();
|
||||||
if (id >= MENU_SCREEN_SIZE_ITEM_ID
|
if (id == R.id.menu_preferences) {
|
||||||
&& id < MENU_SCREEN_SIZE_ITEM_ID_END) {
|
doPreferences();
|
||||||
doSetFontSize(id - MENU_SCREEN_SIZE_ITEM_ID);
|
} else if (id == R.id.menu_reset) {
|
||||||
return true;
|
|
||||||
} else if (id == MENU_WHITE_ON_BLUE_ID) {
|
|
||||||
doWhiteOnBlue();
|
|
||||||
} else if (id == MENU_RESET_TERMINAL_ID) {
|
|
||||||
doResetTerminal();
|
doResetTerminal();
|
||||||
} else if (id == MENU_EMAIL_TRANSCRIPT_ID) {
|
} else if (id == R.id.menu_send_email) {
|
||||||
doEmailTranscript();
|
doEmailTranscript();
|
||||||
} else if (id == MENU_DOCUMENT_KEYS_ID) {
|
} else if (id == R.id.menu_special_keys) {
|
||||||
doDocumentKeys();
|
doDocumentKeys();
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doWhiteOnBlue() {
|
private void doPreferences() {
|
||||||
mWhiteOnBlue = ! mWhiteOnBlue;
|
startActivity(new Intent(this, TermPreferences.class));
|
||||||
setColors();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doRotate90() {
|
|
||||||
mRotation = mRotation != 0.0f ? 0.0f : 90.0f;
|
|
||||||
mEmulatorView.setRotation(mRotation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setColors() {
|
private void setColors() {
|
||||||
if (mWhiteOnBlue) {
|
int[] scheme = COLOR_SCHEMES[mColorId];
|
||||||
mEmulatorView.setColors(WHITE, BLUE);
|
mEmulatorView.setColors(scheme[0], scheme[1]);
|
||||||
} else {
|
|
||||||
mEmulatorView.setColors(BLACK, WHITE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doSetFontSize(int i) {
|
|
||||||
if (mFontSelection != i) {
|
|
||||||
mFontSelection = i;
|
|
||||||
mEmulatorView.setTextSize(TEXT_SIZE[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doResetTerminal() {
|
private void doResetTerminal() {
|
||||||
mEmulatorView.resetTerminal();
|
restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doEmailTranscript() {
|
private void doEmailTranscript() {
|
||||||
@@ -411,15 +517,16 @@ public class Term extends Activity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void doDocumentKeys() {
|
private void doDocumentKeys() {
|
||||||
|
String controlKey = CONTROL_KEY_NAME[mControlKeyId];
|
||||||
new AlertDialog.Builder(this).
|
new AlertDialog.Builder(this).
|
||||||
setTitle("Press Jog Ball and Key").
|
setTitle("Press " + controlKey + " and Key").
|
||||||
setMessage("Ball Space ==> Control-@ (NUL)\n"
|
setMessage(controlKey + " Space ==> Control-@ (NUL)\n"
|
||||||
+ "Ball A..Z ==> Control-A..Z\n"
|
+ controlKey + " A..Z ==> Control-A..Z\n"
|
||||||
+ "Ball 1 ==> Control-[ (ESC)\n"
|
+ controlKey + " 1 ==> Control-[ (ESC)\n"
|
||||||
+ "Ball 5 ==> Control-_\n"
|
+ controlKey + " 5 ==> Control-_\n"
|
||||||
+ "Ball . ==> Control-\\\n"
|
+ controlKey + " . ==> Control-\\\n"
|
||||||
+ "Ball 0 ==> Control-]\n"
|
+ controlKey + " 0 ==> Control-]\n"
|
||||||
+ "Ball 6 ==> Control-^").
|
+ controlKey + " 6 ==> Control-^").
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1857,6 +1964,10 @@ class TerminalEmulator {
|
|||||||
write(attributes);
|
write(attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send data to the shell process
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
private void write(byte[] data) {
|
private void write(byte[] data) {
|
||||||
try {
|
try {
|
||||||
mTermOut.write(data);
|
mTermOut.write(data);
|
||||||
@@ -2245,6 +2356,108 @@ class PaintRenderer extends BaseTextRenderer {
|
|||||||
private static final char[] EXAMPLE_CHAR = {'X'};
|
private static final char[] EXAMPLE_CHAR = {'X'};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A multi-thread-safe produce-consumer byte array.
|
||||||
|
* Only allows one producer and one consumer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ByteQueue {
|
||||||
|
public ByteQueue(int size) {
|
||||||
|
mBuffer = new byte[size];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBytesAvailable() {
|
||||||
|
synchronized(this) {
|
||||||
|
return mStoredBytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read(byte[] buffer, int offset, int length)
|
||||||
|
throws InterruptedException {
|
||||||
|
if (length + offset > buffer.length) {
|
||||||
|
throw
|
||||||
|
new IllegalArgumentException("length + offset > buffer.length");
|
||||||
|
}
|
||||||
|
if (length < 0) {
|
||||||
|
throw
|
||||||
|
new IllegalArgumentException("length < 0");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (length == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
synchronized(this) {
|
||||||
|
while (mStoredBytes == 0) {
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
int totalRead = 0;
|
||||||
|
int bufferLength = mBuffer.length;
|
||||||
|
boolean wasFull = bufferLength == mStoredBytes;
|
||||||
|
while (length > 0 && mStoredBytes > 0) {
|
||||||
|
int oneRun = Math.min(bufferLength - mHead, mStoredBytes);
|
||||||
|
int bytesToCopy = Math.min(length, oneRun);
|
||||||
|
System.arraycopy(mBuffer, mHead, buffer, offset, bytesToCopy);
|
||||||
|
mHead += bytesToCopy;
|
||||||
|
if (mHead >= bufferLength) {
|
||||||
|
mHead = 0;
|
||||||
|
}
|
||||||
|
mStoredBytes -= bytesToCopy;
|
||||||
|
length -= bytesToCopy;
|
||||||
|
offset += bytesToCopy;
|
||||||
|
totalRead += bytesToCopy;
|
||||||
|
}
|
||||||
|
if (wasFull) {
|
||||||
|
notify();
|
||||||
|
}
|
||||||
|
return totalRead;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(byte[] buffer, int offset, int length)
|
||||||
|
throws InterruptedException {
|
||||||
|
if (length + offset > buffer.length) {
|
||||||
|
throw
|
||||||
|
new IllegalArgumentException("length + offset > buffer.length");
|
||||||
|
}
|
||||||
|
if (length < 0) {
|
||||||
|
throw
|
||||||
|
new IllegalArgumentException("length < 0");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
synchronized(this) {
|
||||||
|
int bufferLength = mBuffer.length;
|
||||||
|
boolean wasEmpty = mStoredBytes == 0;
|
||||||
|
while (length > 0) {
|
||||||
|
while(bufferLength == mStoredBytes) {
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
int tail = mHead + mStoredBytes;
|
||||||
|
int oneRun;
|
||||||
|
if (tail >= bufferLength) {
|
||||||
|
tail = tail - bufferLength;
|
||||||
|
oneRun = mHead - tail;
|
||||||
|
} else {
|
||||||
|
oneRun = bufferLength - tail;
|
||||||
|
}
|
||||||
|
int bytesToCopy = Math.min(oneRun, length);
|
||||||
|
System.arraycopy(buffer, offset, mBuffer, tail, bytesToCopy);
|
||||||
|
offset += bytesToCopy;
|
||||||
|
mStoredBytes += bytesToCopy;
|
||||||
|
length -= bytesToCopy;
|
||||||
|
}
|
||||||
|
if (wasEmpty) {
|
||||||
|
notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] mBuffer;
|
||||||
|
private int mHead;
|
||||||
|
private int mStoredBytes;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* A view on a transcript and a terminal emulator. Displays the text of the
|
* A view on a transcript and a terminal emulator. Displays the text of the
|
||||||
* transcript and the current cursor position of the terminal emulator.
|
* transcript and the current cursor position of the terminal emulator.
|
||||||
@@ -2340,6 +2553,9 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
|
|
||||||
private FileOutputStream mTermOut;
|
private FileOutputStream mTermOut;
|
||||||
|
|
||||||
|
private ByteQueue mByteQueue;
|
||||||
|
private final static int MAX_BYTES_PER_UPDATE = 4 * 1024;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to temporarily hold data received from the remote process. Allocated
|
* Used to temporarily hold data received from the remote process. Allocated
|
||||||
* once and used permanently to minimize heap thrashing.
|
* once and used permanently to minimize heap thrashing.
|
||||||
@@ -2347,25 +2563,16 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
private byte[] mReceiveBuffer;
|
private byte[] mReceiveBuffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Our private message id, which we use to check for new input from the
|
* Our private message id, which we use to receive new input from the
|
||||||
* remote process.
|
* remote process.
|
||||||
*/
|
*/
|
||||||
private static final int UPDATE = 1;
|
private static final int UPDATE = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The period in milliseconds between updates.
|
* Thread that polls for input from the remote process
|
||||||
*/
|
*/
|
||||||
private static final int UPDATE_PERIOD_MS = 20;
|
|
||||||
|
|
||||||
/**
|
private Thread mPollingThread;
|
||||||
* The target time for our next update.
|
|
||||||
*/
|
|
||||||
private long mNextTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rotation amount for manual portrait/landscape rotation
|
|
||||||
*/
|
|
||||||
private float mRotation;
|
|
||||||
|
|
||||||
private GestureDetector mGestureDetector;
|
private GestureDetector mGestureDetector;
|
||||||
private float mScrollRemainder;
|
private float mScrollRemainder;
|
||||||
@@ -2376,21 +2583,13 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
private final Handler mHandler = new Handler() {
|
private final Handler mHandler = new Handler() {
|
||||||
/**
|
/**
|
||||||
* Handle the callback message. Call our enclosing class's update
|
* Handle the callback message. Call our enclosing class's update
|
||||||
* method, and then reschedule another callback in the future. In this
|
* method.
|
||||||
* way we implement a periodic callback.
|
|
||||||
*
|
*
|
||||||
* @param msg The callback message.
|
* @param msg The callback message.
|
||||||
*/
|
*/
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
if (msg.what == UPDATE) {
|
if (msg.what == UPDATE) {
|
||||||
update();
|
update();
|
||||||
msg = obtainMessage(UPDATE);
|
|
||||||
long current = SystemClock.uptimeMillis();
|
|
||||||
if (mNextTime < current) {
|
|
||||||
mNextTime = current + UPDATE_PERIOD_MS;
|
|
||||||
}
|
|
||||||
sendMessageAtTime(msg, mNextTime);
|
|
||||||
mNextTime += UPDATE_PERIOD_MS;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -2465,18 +2664,17 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
*
|
*
|
||||||
* @param termFd the file descriptor
|
* @param termFd the file descriptor
|
||||||
* @param termOut the output stream for the pseudo-teletype
|
* @param termOut the output stream for the pseudo-teletype
|
||||||
* @param textSize the point size of the text font
|
|
||||||
*/
|
*/
|
||||||
public void initialize(FileDescriptor termFd, FileOutputStream termOut) {
|
public void initialize(FileDescriptor termFd, FileOutputStream termOut) {
|
||||||
mTermOut = termOut;
|
mTermOut = termOut;
|
||||||
mTermFd = termFd;
|
mTermFd = termFd;
|
||||||
mTextSize = 10;
|
mTextSize = 10;
|
||||||
mRotation = 0.0f;
|
|
||||||
mForeground = Term.WHITE;
|
mForeground = Term.WHITE;
|
||||||
mBackground = Term.BLACK;
|
mBackground = Term.BLACK;
|
||||||
updateText();
|
updateText();
|
||||||
mTermIn = new FileInputStream(mTermFd);
|
mTermIn = new FileInputStream(mTermFd);
|
||||||
mReceiveBuffer = new byte[4 * 1024];
|
mReceiveBuffer = new byte[4 * 1024];
|
||||||
|
mByteQueue = new ByteQueue(4 * 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2529,17 +2727,6 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
updateText();
|
updateText();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the rotation. Currently only 0 and 90 degrees are supported
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void setRotation(float angle) {
|
|
||||||
mRotation = angle;
|
|
||||||
if (mKnownSize) {
|
|
||||||
updateSize(getWidth(), getHeight());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Begin GestureDetector.OnGestureListener methods
|
// Begin GestureDetector.OnGestureListener methods
|
||||||
|
|
||||||
public boolean onSingleTapUp(MotionEvent e) {
|
public boolean onSingleTapUp(MotionEvent e) {
|
||||||
@@ -2625,21 +2812,31 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
if (!mKnownSize) {
|
if (!mKnownSize) {
|
||||||
mKnownSize = true;
|
mKnownSize = true;
|
||||||
|
|
||||||
// Set a timer so we're called back to check for input from the
|
// Set up a thread to read input from the
|
||||||
// pseudo-teletype:
|
// pseudo-teletype:
|
||||||
Message msg = mHandler.obtainMessage(UPDATE);
|
|
||||||
mNextTime = SystemClock.uptimeMillis() + UPDATE_PERIOD_MS;
|
mPollingThread = new Thread(new Runnable() {
|
||||||
mHandler.sendMessageAtTime(msg, mNextTime);
|
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
while(true) {
|
||||||
|
int read = mTermIn.read(mBuffer);
|
||||||
|
mByteQueue.write(mBuffer, 0, read);
|
||||||
|
mHandler.sendMessage(
|
||||||
|
mHandler.obtainMessage(UPDATE));
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private byte[] mBuffer = new byte[4096];
|
||||||
|
});
|
||||||
|
mPollingThread.setName("Input reader");
|
||||||
|
mPollingThread.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSize(int w, int h) {
|
private void updateSize(int w, int h) {
|
||||||
if (mRotation != 0.0f) {
|
|
||||||
int temp = w;
|
|
||||||
w = h;
|
|
||||||
h = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
mColumns = w / mCharacterWidth;
|
mColumns = w / mCharacterWidth;
|
||||||
mRows = h / mCharacterHeight;
|
mRows = h / mCharacterHeight;
|
||||||
|
|
||||||
@@ -2674,26 +2871,12 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
* Look for new input from the ptty, send it to the terminal emulator.
|
* Look for new input from the ptty, send it to the terminal emulator.
|
||||||
*/
|
*/
|
||||||
private void update() {
|
private void update() {
|
||||||
|
int bytesAvailable = mByteQueue.getBytesAvailable();
|
||||||
|
int bytesToRead = Math.min(bytesAvailable, mReceiveBuffer.length);
|
||||||
try {
|
try {
|
||||||
// To avoid starving user input, only process 20 KB
|
int bytesRead = mByteQueue.read(mReceiveBuffer, 0, bytesToRead);
|
||||||
// of input at once
|
append(mReceiveBuffer, 0, bytesRead);
|
||||||
int processed = 0;
|
} catch (InterruptedException e) {
|
||||||
while (processed < 20000) {
|
|
||||||
int available =
|
|
||||||
Math.min(mReceiveBuffer.length, mTermIn.available());
|
|
||||||
if (available <= 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
int received = mTermIn.read(mReceiveBuffer, 0, available);
|
|
||||||
if (received > 0) {
|
|
||||||
append(mReceiveBuffer, 0, received);
|
|
||||||
}
|
|
||||||
processed += received;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// I/O exceptions break out of the input loop, but we don't
|
|
||||||
// report them to the user.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2701,14 +2884,6 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
protected void onDraw(Canvas canvas) {
|
protected void onDraw(Canvas canvas) {
|
||||||
int w = getWidth();
|
int w = getWidth();
|
||||||
int h = getHeight();
|
int h = getHeight();
|
||||||
if (mRotation != 0.0f) {
|
|
||||||
canvas.save(Canvas.MATRIX_SAVE_FLAG);
|
|
||||||
int pivot = Math.min(w, h) >> 1;
|
|
||||||
canvas.rotate(mRotation, pivot, pivot);
|
|
||||||
int temp = w;
|
|
||||||
w = h;
|
|
||||||
h = temp;
|
|
||||||
}
|
|
||||||
canvas.drawRect(0, 0, w, h, mBackgroundPaint);
|
canvas.drawRect(0, 0, w, h, mBackgroundPaint);
|
||||||
mVisibleColumns = w / mCharacterWidth;
|
mVisibleColumns = w / mCharacterWidth;
|
||||||
float x = -mLeftColumn * mCharacterWidth;
|
float x = -mLeftColumn * mCharacterWidth;
|
||||||
@@ -2724,9 +2899,6 @@ class EmulatorView extends View implements GestureDetector.OnGestureListener {
|
|||||||
mTranscriptScreen.drawText(i, canvas, x, y, mTextRenderer, cursorX);
|
mTranscriptScreen.drawText(i, canvas, x, y, mTextRenderer, cursorX);
|
||||||
y += mCharacterHeight;
|
y += mCharacterHeight;
|
||||||
}
|
}
|
||||||
if (mRotation != 0.0f) {
|
|
||||||
canvas.restore();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureCursorVisible() {
|
private void ensureCursorVisible() {
|
||||||
@@ -2842,6 +3014,14 @@ class TermKeyListener {
|
|||||||
public TermKeyListener() {
|
public TermKeyListener() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void handleControlKey(boolean down) {
|
||||||
|
if (down) {
|
||||||
|
mControlKey.onPress();
|
||||||
|
} else {
|
||||||
|
mControlKey.onRelease();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle a keyDown event.
|
* Handle a keyDown event.
|
||||||
*
|
*
|
||||||
@@ -2862,10 +3042,6 @@ class TermKeyListener {
|
|||||||
mCapKey.onPress();
|
mCapKey.onPress();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KeyEvent.KEYCODE_DPAD_CENTER:
|
|
||||||
mControlKey.onPress();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KeyEvent.KEYCODE_ENTER:
|
case KeyEvent.KEYCODE_ENTER:
|
||||||
// Convert newlines into returns. The vt100 sends a
|
// Convert newlines into returns. The vt100 sends a
|
||||||
// '\r' when the 'Return' key is pressed, but our
|
// '\r' when the 'Return' key is pressed, but our
|
||||||
@@ -2929,9 +3105,6 @@ class TermKeyListener {
|
|||||||
case KeyEvent.KEYCODE_SHIFT_RIGHT:
|
case KeyEvent.KEYCODE_SHIFT_RIGHT:
|
||||||
mCapKey.onRelease();
|
mCapKey.onRelease();
|
||||||
break;
|
break;
|
||||||
case KeyEvent.KEYCODE_DPAD_CENTER:
|
|
||||||
mControlKey.onRelease();
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
// Ignore other keyUps
|
// Ignore other keyUps
|
||||||
break;
|
break;
|
||||||
|
|||||||
32
apps/Term/src/com/android/term/TermPreferences.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.term;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceActivity;
|
||||||
|
|
||||||
|
public class TermPreferences extends PreferenceActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
// Load the preferences from an XML resource
|
||||||
|
addPreferencesFromResource(R.xml.preferences);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ LOCAL_PATH := $(call my-dir)
|
|||||||
# anywhere else, and the rules don't support. Aditionally, the depenencies on
|
# anywhere else, and the rules don't support. Aditionally, the depenencies on
|
||||||
# these files don't really matter, because they are all generated as part of
|
# these files don't really matter, because they are all generated as part of
|
||||||
# building the docs. So for the dependency, we just use the
|
# building the docs. So for the dependency, we just use the
|
||||||
# framework-timestamp file, which is the $@ of the droiddoc rule.
|
# offline-sdk-timestamp file, which is the $@ of the droiddoc rule.
|
||||||
# We also need to depend on framework-res.apk, in order to pull the
|
# We also need to depend on framework-res.apk, in order to pull the
|
||||||
# resource files out of there for aapt.
|
# resource files out of there for aapt.
|
||||||
#
|
#
|
||||||
@@ -22,7 +22,7 @@ $(full_target): PRIVATE_INTERMEDIATES_DIR := $(intermediates)
|
|||||||
$(full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(classes_dir)
|
$(full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(classes_dir)
|
||||||
$(full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package)
|
$(full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package)
|
||||||
|
|
||||||
$(full_target): $(OUT_DOCS)/framework-timestamp $(framework_res_package)
|
$(full_target): $(OUT_DOCS)/offline-sdk-timestamp $(framework_res_package)
|
||||||
@echo Compiling SDK Stubs: $@
|
@echo Compiling SDK Stubs: $@
|
||||||
$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR)
|
$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR)
|
||||||
$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)
|
$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)
|
||||||
|
|||||||
106
build/sdk.atree
@@ -30,39 +30,43 @@ bin/mksdcard tools/mksdcard
|
|||||||
development/tools/scripts/add-accounts-sdk tools/add-accounts.py
|
development/tools/scripts/add-accounts-sdk tools/add-accounts.py
|
||||||
|
|
||||||
# the uper-jar file that apps link against
|
# the uper-jar file that apps link against
|
||||||
out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar android.jar
|
out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar platforms/${PLATFORM_NAME}/android.jar
|
||||||
|
|
||||||
sdk/sdk-build.prop tools/lib/build.prop
|
sdk/sdk-build.prop platforms/${PLATFORM_NAME}/build.prop
|
||||||
development/tools/scripts/plugin.prop tools/lib/plugin.prop
|
development/tools/scripts/plugin.prop tools/lib/plugin.prop
|
||||||
|
|
||||||
# the aidl precompiled include
|
# the aidl precompiled include
|
||||||
obj/framework.aidl tools/lib/framework.aidl
|
obj/framework.aidl platforms/${PLATFORM_NAME}/framework.aidl
|
||||||
|
|
||||||
# sdk scripts
|
# sdk scripts
|
||||||
development/tools/scripts/AndroidManifest.template tools/lib/AndroidManifest.template
|
development/tools/scripts/AndroidManifest.template platforms/${PLATFORM_NAME}/templates/AndroidManifest.template
|
||||||
development/tools/scripts/AndroidManifest.alias.template tools/lib/AndroidManifest.alias.template
|
development/tools/scripts/AndroidManifest.alias.template platforms/${PLATFORM_NAME}/templates/AndroidManifest.alias.template
|
||||||
|
development/tools/scripts/AndroidManifest.tests.template platforms/${PLATFORM_NAME}/templates/AndroidManifest.tests.template
|
||||||
|
development/tools/scripts/iml.template platforms/${PLATFORM_NAME}/templates/iml.template
|
||||||
|
development/tools/scripts/ipr.template platforms/${PLATFORM_NAME}/templates/ipr.template
|
||||||
|
development/tools/scripts/iws.template platforms/${PLATFORM_NAME}/templates/iws.template
|
||||||
|
development/tools/scripts/java_file.template platforms/${PLATFORM_NAME}/templates/java_file.template
|
||||||
|
development/tools/scripts/java_tests_file.template platforms/${PLATFORM_NAME}/templates/java_tests_file.template
|
||||||
|
development/tools/scripts/layout.template platforms/${PLATFORM_NAME}/templates/layout.template
|
||||||
|
development/tools/scripts/strings.template platforms/${PLATFORM_NAME}/templates/strings.template
|
||||||
|
development/tools/scripts/alias.template platforms/${PLATFORM_NAME}/templates/alias.template
|
||||||
development/tools/scripts/build.template tools/lib/build.template
|
development/tools/scripts/build.template tools/lib/build.template
|
||||||
development/tools/scripts/build.alias.template tools/lib/build.alias.template
|
development/tools/scripts/build.alias.template tools/lib/build.alias.template
|
||||||
development/tools/scripts/default.properties.template tools/lib/default.properties.template
|
development/tools/scripts/default.properties.template tools/lib/default.properties.template
|
||||||
development/tools/scripts/iml.template tools/lib/iml.template
|
development/tools/scripts/android_rules.xml tools/lib/android_rules.xml
|
||||||
development/tools/scripts/ipr.template tools/lib/ipr.template
|
development/tools/scripts/alias_rules.xml tools/lib/alias_rules.xml
|
||||||
development/tools/scripts/iws.template tools/lib/iws.template
|
|
||||||
development/tools/scripts/java_file.template tools/lib/java_file.template
|
|
||||||
development/tools/scripts/layout.template tools/lib/layout.template
|
|
||||||
development/tools/scripts/strings.template tools/lib/strings.template
|
|
||||||
development/tools/scripts/alias.template tools/lib/alias.template
|
|
||||||
|
|
||||||
# emacs support
|
# emacs support
|
||||||
development/tools/scripts/android.el tools/lib/android.el
|
development/tools/scripts/android.el tools/lib/android.el
|
||||||
|
|
||||||
# samples
|
# samples
|
||||||
development/samples/HelloActivity
|
development/samples/HelloActivity platforms/${PLATFORM_NAME}/samples/HelloActivity
|
||||||
development/samples/Home
|
development/samples/Home platforms/${PLATFORM_NAME}/samples/Home
|
||||||
development/samples/LunarLander
|
development/samples/LunarLander platforms/${PLATFORM_NAME}/samples/LunarLander
|
||||||
development/samples/NotePad
|
development/samples/NotePad platforms/${PLATFORM_NAME}/samples/NotePad
|
||||||
development/samples/ApiDemos
|
development/samples/ApiDemos platforms/${PLATFORM_NAME}/samples/ApiDemos
|
||||||
development/samples/SkeletonApp
|
development/samples/SkeletonApp platforms/${PLATFORM_NAME}/samples/SkeletonApp
|
||||||
development/samples/Snake
|
development/samples/Snake platforms/${PLATFORM_NAME}/samples/Snake
|
||||||
|
|
||||||
# dx
|
# dx
|
||||||
bin/dx tools/dx
|
bin/dx tools/dx
|
||||||
@@ -113,47 +117,53 @@ framework/traceview.jar tools/lib/traceview.jar
|
|||||||
bin/activitycreator tools/activitycreator
|
bin/activitycreator tools/activitycreator
|
||||||
framework/activitycreator.jar tools/lib/activitycreator.jar
|
framework/activitycreator.jar tools/lib/activitycreator.jar
|
||||||
|
|
||||||
|
# sdkmanager
|
||||||
|
bin/android tools/android
|
||||||
|
framework/sdklib.jar tools/lib/sdklib.jar
|
||||||
|
framework/sdkmanager.jar tools/lib/sdkmanager.jar
|
||||||
|
|
||||||
# emulator
|
# emulator
|
||||||
bin/emulator tools/emulator
|
bin/emulator tools/emulator
|
||||||
system.img tools/lib/images/system.img
|
system.img platforms/${PLATFORM_NAME}/images/system.img
|
||||||
ramdisk.img tools/lib/images/ramdisk.img
|
ramdisk.img platforms/${PLATFORM_NAME}/images/ramdisk.img
|
||||||
userdata.img tools/lib/images/userdata.img
|
userdata.img platforms/${PLATFORM_NAME}/images/userdata.img
|
||||||
userdata.img tools/lib/images/userdata.img
|
prebuilt/android-arm/kernel/kernel-qemu platforms/${PLATFORM_NAME}/images/kernel-qemu
|
||||||
development/emulator/prebuilt/android-arm/kernel-qemu tools/lib/images/kernel-qemu
|
external/qemu/android/vm/hardware-properties.ini tools/lib/hardware-properties.ini
|
||||||
|
|
||||||
# emulator skins
|
# emulator skins
|
||||||
development/emulator/skins/HVGA tools/lib/images/skins/HVGA
|
development/emulator/skins/HVGA platforms/${PLATFORM_NAME}/skins/HVGA
|
||||||
development/emulator/skins/HVGA-L tools/lib/images/skins/HVGA-L
|
development/emulator/skins/HVGA-L platforms/${PLATFORM_NAME}/skins/HVGA-L
|
||||||
development/emulator/skins/HVGA-P tools/lib/images/skins/HVGA-P
|
development/emulator/skins/HVGA-P platforms/${PLATFORM_NAME}/skins/HVGA-P
|
||||||
development/emulator/skins/QVGA-L tools/lib/images/skins/QVGA-L
|
development/emulator/skins/QVGA-L platforms/${PLATFORM_NAME}/skins/QVGA-L
|
||||||
development/emulator/skins/QVGA-P tools/lib/images/skins/QVGA-P
|
development/emulator/skins/QVGA-P platforms/${PLATFORM_NAME}/skins/QVGA-P
|
||||||
|
|
||||||
# NOTICE files are copied by config/Makefile
|
# NOTICE files are copied by build/core/Makefile
|
||||||
|
|
||||||
# the readme
|
# the readme
|
||||||
development/docs/SDK_RELEASE_NOTES RELEASE_NOTES.txt
|
development/docs/SDK_RELEASE_NOTES RELEASE_NOTES.txt
|
||||||
|
|
||||||
# the docs
|
# the docs
|
||||||
docs/framework docs
|
docs/offline-sdk docs
|
||||||
frameworks/base/docs/docs-redirect.html documentation.html
|
frameworks/base/docs/docs-redirect.html documentation.html
|
||||||
frameworks/base/docs/docs-samples-redirect.html docs/samples/index.html
|
frameworks/base/docs/docs-samples-redirect.html docs/samples/index.html
|
||||||
|
|
||||||
# tools support
|
# tools support
|
||||||
docs/activity_actions.txt tools/lib/activity_actions.txt
|
docs/activity_actions.txt platforms/${PLATFORM_NAME}/data/activity_actions.txt
|
||||||
docs/broadcast_actions.txt tools/lib/broadcast_actions.txt
|
docs/broadcast_actions.txt platforms/${PLATFORM_NAME}/data/broadcast_actions.txt
|
||||||
docs/service_actions.txt tools/lib/service_actions.txt
|
docs/service_actions.txt platforms/${PLATFORM_NAME}/data/service_actions.txt
|
||||||
docs/categories.txt tools/lib/categories.txt
|
docs/categories.txt platforms/${PLATFORM_NAME}/data/categories.txt
|
||||||
docs/widgets.txt tools/lib/widgets.txt
|
docs/widgets.txt platforms/${PLATFORM_NAME}/data/widgets.txt
|
||||||
framework/layoutlib.jar tools/lib/layoutlib.jar
|
framework/layoutlib.jar platforms/${PLATFORM_NAME}/data/layoutlib.jar
|
||||||
frameworks/base/core/res tools/lib/res/default
|
frameworks/base/core/res/res platforms/${PLATFORM_NAME}/data/res
|
||||||
frameworks/base/data/fonts/fonts.xml tools/lib/fonts/default/fonts.xml
|
frameworks/base/data/fonts/fonts.xml platforms/${PLATFORM_NAME}/data/fonts/fonts.xml
|
||||||
frameworks/base/data/fonts/DroidSans.ttf tools/lib/fonts/default/DroidSans.ttf
|
frameworks/base/data/fonts/DroidSans.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSans.ttf
|
||||||
frameworks/base/data/fonts/DroidSans-Bold.ttf tools/lib/fonts/default/DroidSans-Bold.ttf
|
frameworks/base/data/fonts/DroidSans-Bold.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSans-Bold.ttf
|
||||||
frameworks/base/data/fonts/DroidSansFallback.ttf tools/lib/fonts/default/DroidSansFallback.ttf
|
frameworks/base/data/fonts/DroidSansFallback.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSansFallback.ttf
|
||||||
frameworks/base/data/fonts/DroidSansMono.ttf tools/lib/fonts/default/DroidSansMono.ttf
|
frameworks/base/data/fonts/DroidSansMono.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSansMono.ttf
|
||||||
frameworks/base/data/fonts/DroidSerif-Bold.ttf tools/lib/fonts/default/DroidSerif-Bold.ttf
|
frameworks/base/data/fonts/DroidSerif-Bold.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Bold.ttf
|
||||||
frameworks/base/data/fonts/DroidSerif-BoldItalic.ttf tools/lib/fonts/default/DroidSerif-BoldItalic.ttf
|
frameworks/base/data/fonts/DroidSerif-BoldItalic.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-BoldItalic.ttf
|
||||||
frameworks/base/data/fonts/DroidSerif-Italic.ttf tools/lib/fonts/default/DroidSerif-Italic.ttf
|
frameworks/base/data/fonts/DroidSerif-Italic.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Italic.ttf
|
||||||
frameworks/base/data/fonts/DroidSerif-Regular.ttf tools/lib/fonts/default/DroidSerif-Regular.ttf
|
frameworks/base/data/fonts/DroidSerif-Regular.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Regular.ttf
|
||||||
|
|
||||||
|
|
||||||
|
# empty add-on folder with just a readme
|
||||||
|
development/tools/scripts/README_add-ons.txt add-ons/README.txt
|
||||||
|
|||||||
129
build/tools/make_windows_sdk.sh
Executable file
@@ -0,0 +1,129 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Quick semi-auto file to build Windows SDK tools.
|
||||||
|
#
|
||||||
|
# Limitations:
|
||||||
|
# - Expects the emulator has been built first, will pick it up from prebuilt.
|
||||||
|
# - Run in Cygwin
|
||||||
|
# - Needs Cygwin package zip
|
||||||
|
# - Expects to have one of the existing SDK (Darwin or Linux) to build the Windows one
|
||||||
|
|
||||||
|
set -e # Fail this script as soon as a command fails -- fail early, fail fast
|
||||||
|
|
||||||
|
SDK_ZIP="$1"
|
||||||
|
DIST_DIR="$2"
|
||||||
|
|
||||||
|
function die() {
|
||||||
|
echo "Error:" $*
|
||||||
|
echo "Aborting"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function check() {
|
||||||
|
[ -f "$SDK_ZIP" ] || die "Pass the path of an existing Linux/Darwin SDK .zip as first parameter"
|
||||||
|
[ -d "$DIST_DIR" ] || die "Pass the output directory as second parameter"
|
||||||
|
|
||||||
|
# Use the BUILD_ID as SDK_NUMBER if defined, otherwise try to get it from the
|
||||||
|
# provided zip filename.
|
||||||
|
if [ -f config/build_id.make ]; then
|
||||||
|
BUILD_ID=`cat config/build_id.make | sed -n '/BUILD_ID=/s/^[^=]\+=\(.*\)$/\1/p'`
|
||||||
|
[ -n "$BUILD_ID" ] && SDK_NUMBER="$BUILD_ID"
|
||||||
|
fi
|
||||||
|
if [ -z "$SDK_NUMBER" ]; then
|
||||||
|
# Look for a pattern like "anything_sdknumber.extension"
|
||||||
|
# The pattern is now "any-thing_sdknumber_anything-else.extension"
|
||||||
|
#
|
||||||
|
# The bottom line is that the SDK number is whatever is enclosed by
|
||||||
|
# the LAST couple of underscores. You can have underscores *before* the
|
||||||
|
# SDK number if you want, but not after, e.g these are valid:
|
||||||
|
# android_sdk_4242_platform.zip or blah_42_.zip
|
||||||
|
#
|
||||||
|
# SDK_NUMBER will be empty if nothing matched.
|
||||||
|
filename=`basename "$SDK_ZIP"`
|
||||||
|
SDK_NUMBER=`echo $filename | sed -n 's/^.*_\([^_./]\+\)_[^_.]*\..*$/\1/p'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$SDK_NUMBER" ] || die "Failed to extract the SDK number from $SDK_ZIP. Check its format."
|
||||||
|
|
||||||
|
[ $OSTYPE == "cygwin" ] || die "This expects to run under Cygwin"
|
||||||
|
[ -e `which zip` ] || die "Please install 'zip' package in Cygwin"
|
||||||
|
[ -f "build/envsetup.sh" ] || die "Please run this from the 'android' directory"
|
||||||
|
|
||||||
|
echo "Using SDK ${SDK_NUMBER}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function build() {
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Building..."
|
||||||
|
[ -n "$MAKE_OPT" ] && echo "Make options: $MAKE_OPT"
|
||||||
|
. build/envsetup.sh
|
||||||
|
make -j 4 emulator || die "Build failed"
|
||||||
|
# Disable parallel build: it generates "permission denied" issues when
|
||||||
|
# multiple "ar.exe" are running in parallel.
|
||||||
|
make prebuilt adb fastboot aidl aapt dexdump dmtracedump mksdcard sqlite3 || die "Build failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
function package() {
|
||||||
|
echo
|
||||||
|
echo "Packaging..."
|
||||||
|
DEST_NAME="android-sdk_${SDK_NUMBER}_windows"
|
||||||
|
DEST="$DIST_DIR/$DEST_NAME"
|
||||||
|
DEST_NAME_ZIP="${DEST_NAME}.zip"
|
||||||
|
|
||||||
|
# Unzip current linux/mac SDK and rename using the windows name
|
||||||
|
[ -e "$DEST" ] && rm -rfv "$DEST" # cleanup dest first if exists
|
||||||
|
UNZIPPED=`basename "$SDK_ZIP"`
|
||||||
|
UNZIPPED="$DIST_DIR/${UNZIPPED/.zip/}"
|
||||||
|
[ -e "$UNZIPPED" ] && rm -rfv "$UNZIPPED" # cleanup unzip dir (if exists)
|
||||||
|
unzip "$SDK_ZIP" -d "$DIST_DIR"
|
||||||
|
mv -v "$UNZIPPED" "$DEST"
|
||||||
|
|
||||||
|
# USB Driver is not in tools
|
||||||
|
mkdir -pv $DEST/usb_driver
|
||||||
|
cp -rv development/host/windows/prebuilt/usb/driver/* $DEST/usb_driver
|
||||||
|
|
||||||
|
# Remove obsolete stuff from tools
|
||||||
|
TOOLS="$DEST/tools"
|
||||||
|
LIB="$DEST/tools/lib"
|
||||||
|
rm -v "$TOOLS"/{aapt,aidl,adb,emulator,traceview,draw9patch,hierarchyviewer,dx,dexdump,apkbuilder,ddms,dmtracedump,mksdcard,sqlite3,activitycreator,android}
|
||||||
|
rm -v --force "$LIB"/*.so "$LIB"/*.jnilib
|
||||||
|
|
||||||
|
# Copy all the new stuff in tools
|
||||||
|
cp -v out/host/windows-x86/bin/*.{exe,dll} "$TOOLS"
|
||||||
|
cp -v prebuilt/windows/swt/*.{jar,dll} "$LIB"
|
||||||
|
# Do we want the emulator NOTICE in the tools dir? Cf http://b/930608.
|
||||||
|
# If yes, uncomment the following line:
|
||||||
|
# cp -v external/qemu/NOTICE "$TOOLS"/emulator_NOTICE.txt
|
||||||
|
|
||||||
|
|
||||||
|
# We currently need libz from MinGW for aapt
|
||||||
|
cp -v /cygdrive/c/cygwin/bin/mgwz.dll "$TOOLS"
|
||||||
|
|
||||||
|
# Update a bunch of bat files
|
||||||
|
cp -v dalvik/dx/etc/dx.bat "$TOOLS"
|
||||||
|
cp -v development/tools/apkbuilder/etc/apkbuilder.bat "$TOOLS"
|
||||||
|
cp -v development/tools/ddms/app/etc/ddms.bat "$TOOLS"
|
||||||
|
cp -v development/tools/traceview/etc/traceview.bat "$TOOLS"
|
||||||
|
cp -v development/tools/hierarchyviewer/etc/hierarchyviewer.bat "$TOOLS"
|
||||||
|
cp -v development/tools/draw9patch/etc/draw9patch.bat "$TOOLS"
|
||||||
|
cp -v development/tools/activitycreator/etc/activitycreator.bat "$TOOLS"
|
||||||
|
cp -v development/tools/sdkmanager/app/etc/android.bat "$TOOLS"
|
||||||
|
|
||||||
|
# Fix EOL chars to make window users happy - fix all files at the top level only
|
||||||
|
find "$DIST_DIR" -maxdepth 1 -type f -print | xargs unix2dos -D
|
||||||
|
|
||||||
|
# Done.. Zip it
|
||||||
|
pushd "$DIST_DIR" > /dev/null
|
||||||
|
[ -e "$DEST_NAME_ZIP" ] && rm -rfv "$DEST_NAME_ZIP"
|
||||||
|
zip -9r "$DEST_NAME_ZIP" "$DEST_NAME" && rm -rfv "$DEST_NAME"
|
||||||
|
popd > /dev/null
|
||||||
|
echo "Done"
|
||||||
|
echo
|
||||||
|
echo "Resulting SDK is in $DIST_DIR/$DEST_NAME_ZIP"
|
||||||
|
}
|
||||||
|
|
||||||
|
check
|
||||||
|
build
|
||||||
|
package
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
@@ -28,13 +28,8 @@ import android.os.Debug;
|
|||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
import android.os.SystemClock;
|
|
||||||
import android.server.data.CrashData;
|
import android.server.data.CrashData;
|
||||||
import android.view.Display;
|
|
||||||
import android.view.IWindowManager;
|
import android.view.IWindowManager;
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.WindowManagerImpl;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
@@ -43,12 +38,10 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application that injects random key events and other actions into the system.
|
* Application that injects random key events and other actions into the system.
|
||||||
@@ -62,117 +55,6 @@ public class Monkey {
|
|||||||
*/
|
*/
|
||||||
private final static int DEBUG_ALLOW_ANY_STARTS = 0;
|
private final static int DEBUG_ALLOW_ANY_STARTS = 0;
|
||||||
private final static int DEBUG_ALLOW_ANY_RESTARTS = 0;
|
private final static int DEBUG_ALLOW_ANY_RESTARTS = 0;
|
||||||
|
|
||||||
/** Key events that move around the UI. */
|
|
||||||
private final int[] NAV_KEYS = {
|
|
||||||
KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN,
|
|
||||||
KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT,
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* Key events that perform major navigation options (so shouldn't be sent
|
|
||||||
* as much).
|
|
||||||
*/
|
|
||||||
private final int[] MAJOR_NAV_KEYS = {
|
|
||||||
KeyEvent.KEYCODE_MENU, /*KeyEvent.KEYCODE_SOFT_RIGHT,*/
|
|
||||||
KeyEvent.KEYCODE_DPAD_CENTER,
|
|
||||||
};
|
|
||||||
/** Key events that perform system operations. */
|
|
||||||
private final int[] SYS_KEYS = {
|
|
||||||
KeyEvent.KEYCODE_HOME, KeyEvent.KEYCODE_BACK,
|
|
||||||
KeyEvent.KEYCODE_CALL, KeyEvent.KEYCODE_ENDCALL,
|
|
||||||
KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_VOLUME_DOWN,
|
|
||||||
};
|
|
||||||
/** Nice names for all key events. */
|
|
||||||
private final String[] KEY_NAMES = {
|
|
||||||
"KEYCODE_UNKNOWN",
|
|
||||||
"KEYCODE_MENU",
|
|
||||||
"KEYCODE_SOFT_RIGHT",
|
|
||||||
"KEYCODE_HOME",
|
|
||||||
"KEYCODE_BACK",
|
|
||||||
"KEYCODE_CALL",
|
|
||||||
"KEYCODE_ENDCALL",
|
|
||||||
"KEYCODE_0",
|
|
||||||
"KEYCODE_1",
|
|
||||||
"KEYCODE_2",
|
|
||||||
"KEYCODE_3",
|
|
||||||
"KEYCODE_4",
|
|
||||||
"KEYCODE_5",
|
|
||||||
"KEYCODE_6",
|
|
||||||
"KEYCODE_7",
|
|
||||||
"KEYCODE_8",
|
|
||||||
"KEYCODE_9",
|
|
||||||
"KEYCODE_STAR",
|
|
||||||
"KEYCODE_POUND",
|
|
||||||
"KEYCODE_DPAD_UP",
|
|
||||||
"KEYCODE_DPAD_DOWN",
|
|
||||||
"KEYCODE_DPAD_LEFT",
|
|
||||||
"KEYCODE_DPAD_RIGHT",
|
|
||||||
"KEYCODE_DPAD_CENTER",
|
|
||||||
"KEYCODE_VOLUME_UP",
|
|
||||||
"KEYCODE_VOLUME_DOWN",
|
|
||||||
"KEYCODE_POWER",
|
|
||||||
"KEYCODE_CAMERA",
|
|
||||||
"KEYCODE_CLEAR",
|
|
||||||
"KEYCODE_A",
|
|
||||||
"KEYCODE_B",
|
|
||||||
"KEYCODE_C",
|
|
||||||
"KEYCODE_D",
|
|
||||||
"KEYCODE_E",
|
|
||||||
"KEYCODE_F",
|
|
||||||
"KEYCODE_G",
|
|
||||||
"KEYCODE_H",
|
|
||||||
"KEYCODE_I",
|
|
||||||
"KEYCODE_J",
|
|
||||||
"KEYCODE_K",
|
|
||||||
"KEYCODE_L",
|
|
||||||
"KEYCODE_M",
|
|
||||||
"KEYCODE_N",
|
|
||||||
"KEYCODE_O",
|
|
||||||
"KEYCODE_P",
|
|
||||||
"KEYCODE_Q",
|
|
||||||
"KEYCODE_R",
|
|
||||||
"KEYCODE_S",
|
|
||||||
"KEYCODE_T",
|
|
||||||
"KEYCODE_U",
|
|
||||||
"KEYCODE_V",
|
|
||||||
"KEYCODE_W",
|
|
||||||
"KEYCODE_X",
|
|
||||||
"KEYCODE_Y",
|
|
||||||
"KEYCODE_Z",
|
|
||||||
"KEYCODE_COMMA",
|
|
||||||
"KEYCODE_PERIOD",
|
|
||||||
"KEYCODE_ALT_LEFT",
|
|
||||||
"KEYCODE_ALT_RIGHT",
|
|
||||||
"KEYCODE_SHIFT_LEFT",
|
|
||||||
"KEYCODE_SHIFT_RIGHT",
|
|
||||||
"KEYCODE_TAB",
|
|
||||||
"KEYCODE_SPACE",
|
|
||||||
"KEYCODE_SYM",
|
|
||||||
"KEYCODE_EXPLORER",
|
|
||||||
"KEYCODE_ENVELOPE",
|
|
||||||
"KEYCODE_ENTER",
|
|
||||||
"KEYCODE_DEL",
|
|
||||||
"KEYCODE_GRAVE",
|
|
||||||
"KEYCODE_MINUS",
|
|
||||||
"KEYCODE_EQUALS",
|
|
||||||
"KEYCODE_LEFT_BRACKET",
|
|
||||||
"KEYCODE_RIGHT_BRACKET",
|
|
||||||
"KEYCODE_BACKSLASH",
|
|
||||||
"KEYCODE_SEMICOLON",
|
|
||||||
"KEYCODE_APOSTROPHE",
|
|
||||||
"KEYCODE_SLASH",
|
|
||||||
"KEYCODE_AT",
|
|
||||||
"KEYCODE_NUM",
|
|
||||||
"KEYCODE_HEADSETHOOK",
|
|
||||||
"KEYCODE_FOCUS",
|
|
||||||
"KEYCODE_PLUS",
|
|
||||||
"KEYCODE_MENU",
|
|
||||||
"KEYCODE_NOTIFICATION",
|
|
||||||
"KEYCODE_SEARCH",
|
|
||||||
|
|
||||||
"TAG_LAST_KEYCODE" // EOL. used to keep the lists in sync
|
|
||||||
};
|
|
||||||
|
|
||||||
private IActivityManager mAm;
|
private IActivityManager mAm;
|
||||||
private IWindowManager mWm;
|
private IWindowManager mWm;
|
||||||
private IPackageManager mPm;
|
private IPackageManager mPm;
|
||||||
@@ -238,25 +120,16 @@ public class Monkey {
|
|||||||
long mDroppedKeyEvents = 0;
|
long mDroppedKeyEvents = 0;
|
||||||
long mDroppedPointerEvents = 0;
|
long mDroppedPointerEvents = 0;
|
||||||
long mDroppedTrackballEvents = 0;
|
long mDroppedTrackballEvents = 0;
|
||||||
|
long mDroppedFlipEvents = 0;
|
||||||
/** percentages for each type of event. These will be remapped to working
|
|
||||||
* values after we read any optional values.
|
/** a filename to the script (if any) **/
|
||||||
**/
|
private String mScriptFileName = null;
|
||||||
public static final int FACTOR_TOUCH = 0;
|
|
||||||
public static final int FACTOR_MOTION = 1;
|
|
||||||
public static final int FACTOR_TRACKBALL = 2;
|
|
||||||
public static final int FACTOR_NAV = 3;
|
|
||||||
public static final int FACTOR_MAJORNAV = 4;
|
|
||||||
public static final int FACTOR_SYSOPS = 5;
|
|
||||||
public static final int FACTOR_APPSWITCH = 6;
|
|
||||||
public static final int FACTOR_ANYTHING = 7;
|
|
||||||
|
|
||||||
public static final int FACTORZ_COUNT = 8; // should be last+1
|
|
||||||
|
|
||||||
float[] mFactors = new float[FACTORZ_COUNT];
|
|
||||||
|
|
||||||
private static final File TOMBSTONES_PATH = new File("/data/tombstones");
|
private static final File TOMBSTONES_PATH = new File("/data/tombstones");
|
||||||
private HashSet<String> mTombstones = null;
|
private HashSet<String> mTombstones = null;
|
||||||
|
|
||||||
|
float[] mFactors = new float[MonkeySourceRandom.FACTORZ_COUNT];
|
||||||
|
MonkeyEventSource mEventSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Monitor operations happening in the system.
|
* Monitor operations happening in the system.
|
||||||
@@ -440,21 +313,15 @@ public class Monkey {
|
|||||||
mSeed = 0;
|
mSeed = 0;
|
||||||
mThrottle = 0;
|
mThrottle = 0;
|
||||||
|
|
||||||
// default values for random distributions
|
|
||||||
// note, these are straight percentages, to match user input (cmd line args)
|
|
||||||
// but they will be converted to 0..1 values before the main loop runs.
|
|
||||||
mFactors[FACTOR_TOUCH] = 15.0f;
|
|
||||||
mFactors[FACTOR_MOTION] = 10.0f;
|
|
||||||
mFactors[FACTOR_TRACKBALL] = 15.0f;
|
|
||||||
mFactors[FACTOR_NAV] = 25.0f;
|
|
||||||
mFactors[FACTOR_MAJORNAV] = 15.0f;
|
|
||||||
mFactors[FACTOR_SYSOPS] = 2.0f;
|
|
||||||
mFactors[FACTOR_APPSWITCH] = 2.0f;
|
|
||||||
mFactors[FACTOR_ANYTHING] = 16.0f;
|
|
||||||
|
|
||||||
// prepare for command-line processing
|
// prepare for command-line processing
|
||||||
mArgs = args;
|
mArgs = args;
|
||||||
mNextArg = 0;
|
mNextArg = 0;
|
||||||
|
|
||||||
|
//set a positive value, indicating none of the factors is provided yet
|
||||||
|
for (int i = 0; i < MonkeySourceRandom.FACTORZ_COUNT; i++) {
|
||||||
|
mFactors[i] = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
if (!processOptions()) {
|
if (!processOptions()) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -493,16 +360,40 @@ public class Monkey {
|
|||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!adjustEventFactors()) {
|
if (mScriptFileName != null) {
|
||||||
return -5;
|
// script mode, ignore other options
|
||||||
|
mEventSource = new MonkeySourceScript(mScriptFileName);
|
||||||
|
mEventSource.setVerbose(mVerbose);
|
||||||
|
} else {
|
||||||
|
// random source by default
|
||||||
|
if (mVerbose >= 2) { // check seeding performance
|
||||||
|
System.out.println("// Seeded: " + mSeed);
|
||||||
|
}
|
||||||
|
mEventSource = new MonkeySourceRandom(mSeed, mMainApps);
|
||||||
|
mEventSource.setVerbose(mVerbose);
|
||||||
|
//set any of the factors that has been set
|
||||||
|
for (int i = 0; i < MonkeySourceRandom.FACTORZ_COUNT; i++) {
|
||||||
|
if (mFactors[i] <= 0.0f) {
|
||||||
|
((MonkeySourceRandom) mEventSource).setFactors(i, mFactors[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//in random mode, we start with a random activity
|
||||||
|
((MonkeySourceRandom) mEventSource).generateActivity();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Java's Random doesn't scramble well at all on seeding, so we'll use
|
//validate source generator
|
||||||
// the better random source here.
|
if (!mEventSource.validate()) {
|
||||||
SecureRandom random = new SecureRandom();
|
return -5;
|
||||||
random.setSeed((mSeed == 0) ? -1 : mSeed);
|
}
|
||||||
if (mVerbose >= 2) { // check seeding performance
|
|
||||||
System.out.println("// Seeded: " + mSeed + " and pulling: " + random.nextFloat());
|
if (mScriptFileName != null) {
|
||||||
|
// in random mode, count is the number of single events
|
||||||
|
// while in script mode, count is the number of repetition
|
||||||
|
// for a sequence of events, so we need do multiply the length of
|
||||||
|
// that sequence
|
||||||
|
mCount = mCount * ((MonkeySourceScript) mEventSource)
|
||||||
|
.getOneRoundEventCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we're profiling, do it immediately before/after the main monkey loop
|
// If we're profiling, do it immediately before/after the main monkey loop
|
||||||
@@ -510,7 +401,7 @@ public class Monkey {
|
|||||||
signalPersistentProcesses();
|
signalPersistentProcesses();
|
||||||
}
|
}
|
||||||
|
|
||||||
int crashedAtCycle = runMonkeyCycles(random);
|
int crashedAtCycle = runMonkeyCycles();
|
||||||
|
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if (mRequestAnrTraces) {
|
if (mRequestAnrTraces) {
|
||||||
@@ -536,7 +427,7 @@ public class Monkey {
|
|||||||
// just in case this was latent (after mCount cycles), make sure
|
// just in case this was latent (after mCount cycles), make sure
|
||||||
// we report it
|
// we report it
|
||||||
if (crashedAtCycle >= mCount) {
|
if (crashedAtCycle >= mCount) {
|
||||||
crashedAtCycle = mCount -1;
|
crashedAtCycle = mCount - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -547,10 +438,12 @@ public class Monkey {
|
|||||||
System.out.print(" pointers=");
|
System.out.print(" pointers=");
|
||||||
System.out.print(mDroppedPointerEvents);
|
System.out.print(mDroppedPointerEvents);
|
||||||
System.out.print(" trackballs=");
|
System.out.print(" trackballs=");
|
||||||
System.out.println(mDroppedTrackballEvents);
|
System.out.print(mDroppedTrackballEvents);
|
||||||
|
System.out.print(" flips=");
|
||||||
|
System.out.println(mDroppedFlipEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crashedAtCycle < mCount) {
|
if (crashedAtCycle < mCount - 1) {
|
||||||
System.err.println("** System appears to have crashed at event "
|
System.err.println("** System appears to have crashed at event "
|
||||||
+ crashedAtCycle + " of " + mCount + " using seed " + mSeed);
|
+ crashedAtCycle + " of " + mCount + " using seed " + mSeed);
|
||||||
return crashedAtCycle;
|
return crashedAtCycle;
|
||||||
@@ -576,7 +469,7 @@ public class Monkey {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
String opt;
|
String opt;
|
||||||
while ((opt=nextOption()) != null) {
|
while ((opt = nextOption()) != null) {
|
||||||
if (opt.equals("-s")) {
|
if (opt.equals("-s")) {
|
||||||
mSeed = nextOptionLong("Seed");
|
mSeed = nextOptionLong("Seed");
|
||||||
} else if (opt.equals("-p")) {
|
} else if (opt.equals("-p")) {
|
||||||
@@ -598,27 +491,37 @@ public class Monkey {
|
|||||||
} else if (opt.equals("--hprof")) {
|
} else if (opt.equals("--hprof")) {
|
||||||
mGenerateHprof = true;
|
mGenerateHprof = true;
|
||||||
} else if (opt.equals("--pct-touch")) {
|
} else if (opt.equals("--pct-touch")) {
|
||||||
mFactors[FACTOR_TOUCH] = -nextOptionLong("touch events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_TOUCH] =
|
||||||
|
-nextOptionLong("touch events percentage");
|
||||||
} else if (opt.equals("--pct-motion")) {
|
} else if (opt.equals("--pct-motion")) {
|
||||||
mFactors[FACTOR_MOTION] = -nextOptionLong("motion events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_MOTION] =
|
||||||
|
-nextOptionLong("motion events percentage");
|
||||||
} else if (opt.equals("--pct-trackball")) {
|
} else if (opt.equals("--pct-trackball")) {
|
||||||
mFactors[FACTOR_TRACKBALL] = -nextOptionLong("trackball events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_TRACKBALL] =
|
||||||
} else if (opt.equals("--pct-syskeys")) {
|
-nextOptionLong("trackball events percentage");
|
||||||
mFactors[FACTOR_SYSOPS] = -nextOptionLong("system key events percentage");
|
|
||||||
} else if (opt.equals("--pct-nav")) {
|
} else if (opt.equals("--pct-nav")) {
|
||||||
mFactors[FACTOR_NAV] = -nextOptionLong("nav events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_NAV] =
|
||||||
|
-nextOptionLong("nav events percentage");
|
||||||
} else if (opt.equals("--pct-majornav")) {
|
} else if (opt.equals("--pct-majornav")) {
|
||||||
mFactors[FACTOR_MAJORNAV] = -nextOptionLong("major nav events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_MAJORNAV] =
|
||||||
|
-nextOptionLong("major nav events percentage");
|
||||||
} else if (opt.equals("--pct-appswitch")) {
|
} else if (opt.equals("--pct-appswitch")) {
|
||||||
mFactors[FACTOR_APPSWITCH] = -nextOptionLong("app switch events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_APPSWITCH] =
|
||||||
|
-nextOptionLong("app switch events percentage");
|
||||||
|
} else if (opt.equals("--pct-flip")) {
|
||||||
|
mFactors[MonkeySourceRandom.FACTOR_FLIP] =
|
||||||
|
-nextOptionLong("keyboard flip percentage");
|
||||||
} else if (opt.equals("--pct-anyevent")) {
|
} else if (opt.equals("--pct-anyevent")) {
|
||||||
mFactors[FACTOR_ANYTHING] = -nextOptionLong("any events percentage");
|
mFactors[MonkeySourceRandom.FACTOR_ANYTHING] =
|
||||||
|
-nextOptionLong("any events percentage");
|
||||||
} else if (opt.equals("--throttle")) {
|
} else if (opt.equals("--throttle")) {
|
||||||
mThrottle = nextOptionLong("delay (in milliseconds) to wait between events");
|
mThrottle = nextOptionLong("delay (in milliseconds) to wait between events");
|
||||||
} else if (opt.equals("--wait-dbg")) {
|
} else if (opt.equals("--wait-dbg")) {
|
||||||
// do nothing - it's caught at the very start of run()
|
// do nothing - it's caught at the very start of run()
|
||||||
} else if (opt.equals("--dbg-no-events")) {
|
} else if (opt.equals("--dbg-no-events")) {
|
||||||
mSendNoEvents = true;
|
mSendNoEvents = true;
|
||||||
|
} else if (opt.equals("-f")) {
|
||||||
|
mScriptFileName = nextOptionData();
|
||||||
} else if (opt.equals("-h")) {
|
} else if (opt.equals("-h")) {
|
||||||
showUsage();
|
showUsage();
|
||||||
return false;
|
return false;
|
||||||
@@ -648,10 +551,10 @@ public class Monkey {
|
|||||||
showUsage();
|
showUsage();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for any internal configuration (primarily build-time) errors.
|
* Check for any internal configuration (primarily build-time) errors.
|
||||||
*
|
*
|
||||||
@@ -659,13 +562,13 @@ public class Monkey {
|
|||||||
*/
|
*/
|
||||||
private boolean checkInternalConfiguration() {
|
private boolean checkInternalConfiguration() {
|
||||||
// Check KEYCODE name array, make sure it's up to date.
|
// Check KEYCODE name array, make sure it's up to date.
|
||||||
|
|
||||||
String lastKeyName = null;
|
String lastKeyName = null;
|
||||||
try {
|
try {
|
||||||
lastKeyName = KEY_NAMES[KeyEvent.MAX_KEYCODE+1];
|
lastKeyName = MonkeySourceRandom.getLastKeyName();
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
}
|
}
|
||||||
if (! "TAG_LAST_KEYCODE".equals(lastKeyName)) {
|
if (!"TAG_LAST_KEYCODE".equals(lastKeyName)) {
|
||||||
System.err.println("** Error: Key names array malformed (internal error).");
|
System.err.println("** Error: Key names array malformed (internal error).");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -685,8 +588,7 @@ public class Monkey {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
mWm = IWindowManager.Stub.asInterface(
|
mWm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
|
||||||
ServiceManager.getService("window"));
|
|
||||||
if (mWm == null) {
|
if (mWm == null) {
|
||||||
System.err.println("** Error: Unable to connect to window manager; is the system running?");
|
System.err.println("** Error: Unable to connect to window manager; is the system running?");
|
||||||
return false;
|
return false;
|
||||||
@@ -697,7 +599,7 @@ public class Monkey {
|
|||||||
System.err.println("** Error: Unable to connect to package manager; is the system running?");
|
System.err.println("** Error: Unable to connect to package manager; is the system running?");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mAm.setActivityWatcher(new ActivityWatcher());
|
mAm.setActivityWatcher(new ActivityWatcher());
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
@@ -707,7 +609,7 @@ public class Monkey {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Using the restrictions provided (categories & packages), generate a list of activities
|
* Using the restrictions provided (categories & packages), generate a list of activities
|
||||||
* that we can actually switch to.
|
* that we can actually switch to.
|
||||||
@@ -717,7 +619,7 @@ public class Monkey {
|
|||||||
private boolean getMainApps() {
|
private boolean getMainApps() {
|
||||||
try {
|
try {
|
||||||
final int N = mMainCategories.size();
|
final int N = mMainCategories.size();
|
||||||
for (int i=0; i<N; i++) {
|
for (int i = 0; i< N; i++) {
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
String category = mMainCategories.get(i);
|
String category = mMainCategories.get(i);
|
||||||
if (category.length() > 0) {
|
if (category.length() > 0) {
|
||||||
@@ -732,7 +634,7 @@ public class Monkey {
|
|||||||
System.out.println("// Selecting main activities from category " + category);
|
System.out.println("// Selecting main activities from category " + category);
|
||||||
}
|
}
|
||||||
final int NA = mainApps.size();
|
final int NA = mainApps.size();
|
||||||
for (int a=0; a<NA; a++) {
|
for (int a = 0; a < NA; a++) {
|
||||||
ResolveInfo r = mainApps.get(a);
|
ResolveInfo r = mainApps.get(a);
|
||||||
if (mValidPackages.size() == 0 ||
|
if (mValidPackages.size() == 0 ||
|
||||||
mValidPackages.contains(r.activityInfo.applicationInfo.packageName)) {
|
mValidPackages.contains(r.activityInfo.applicationInfo.packageName)) {
|
||||||
@@ -769,87 +671,20 @@ public class Monkey {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Adjust the percentages (after applying user values) and then normalize to a 0..1 scale.
|
|
||||||
*/
|
|
||||||
private boolean adjustEventFactors() {
|
|
||||||
// go through all values and compute totals for user & default values
|
|
||||||
float userSum = 0.0f;
|
|
||||||
float defaultSum = 0.0f;
|
|
||||||
int defaultCount = 0;
|
|
||||||
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
|
||||||
if (mFactors[i] <= 0.0f) { // user values are zero or negative
|
|
||||||
userSum -= mFactors[i];
|
|
||||||
} else {
|
|
||||||
defaultSum += mFactors[i];
|
|
||||||
++defaultCount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the user request was > 100%, reject it
|
|
||||||
if (userSum > 100.0f) {
|
|
||||||
System.err.println("** Event weights > 100%");
|
|
||||||
showUsage();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the user specified all of the weights, then they need to be 100%
|
|
||||||
if (defaultCount == 0 && (userSum < 99.9f || userSum > 100.1f)) {
|
|
||||||
System.err.println("** Event weights != 100%");
|
|
||||||
showUsage();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// compute the adjustment necessary
|
|
||||||
float defaultsTarget = (100.0f - userSum);
|
|
||||||
float defaultsAdjustment = defaultsTarget / defaultSum;
|
|
||||||
|
|
||||||
// fix all values, by adjusting defaults, or flipping user values back to >0
|
|
||||||
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
|
||||||
if (mFactors[i] <= 0.0f) { // user values are zero or negative
|
|
||||||
mFactors[i] = -mFactors[i];
|
|
||||||
} else {
|
|
||||||
mFactors[i] *= defaultsAdjustment;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if verbose, show factors
|
|
||||||
if (mVerbose > 0) {
|
|
||||||
System.out.println("// Event percentages:");
|
|
||||||
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
|
||||||
System.out.println("// " + i + ": " + mFactors[i] + "%");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// finally, normalize and convert to running sum
|
|
||||||
float sum = 0.0f;
|
|
||||||
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
|
||||||
sum += mFactors[i] / 100.0f;
|
|
||||||
mFactors[i] = sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run mCount cycles and see if we hit any crashers.
|
* Run mCount cycles and see if we hit any crashers.
|
||||||
*
|
*
|
||||||
* TODO: Meta state on keys
|
* TODO: Meta state on keys
|
||||||
*
|
*
|
||||||
* @param random The random source to use
|
* @return Returns the last cycle which executed. If the value == mCount, no errors detected.
|
||||||
* @return Returns the last cycle which executed. If the value == mCount, no errors detected.
|
|
||||||
*/
|
*/
|
||||||
private int runMonkeyCycles(Random random) {
|
private int runMonkeyCycles() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int lastKey = 0;
|
int lastKey = 0;
|
||||||
|
|
||||||
boolean systemCrashed = false;
|
boolean systemCrashed = false;
|
||||||
|
|
||||||
if (!startRandomActivity(random)) {
|
|
||||||
systemCrashed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!systemCrashed && i < mCount) {
|
while (!systemCrashed && i < mCount) {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if (mRequestAnrTraces) {
|
if (mRequestAnrTraces) {
|
||||||
@@ -873,14 +708,14 @@ public class Monkey {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(mThrottle);
|
Thread.sleep(mThrottle);
|
||||||
} catch (InterruptedException e1) {
|
} catch (InterruptedException e1) {
|
||||||
System.out.println("** Monkey interrupted in sleep.");
|
System.out.println("** Monkey interrupted in sleep.");
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
// In this debugging mode, we never send any events. This is primarily
|
// In this debugging mode, we never send any events. This is primarily
|
||||||
// here so you can manually test the package or category limits, while manually
|
// here so you can manually test the package or category limits, while manually
|
||||||
// exercising the system.
|
// exercising the system.
|
||||||
@@ -889,220 +724,34 @@ public class Monkey {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mVerbose > 0) && (i%100) == 0 && i != 0 && lastKey == 0) {
|
if ((mVerbose > 0) && (i % 100) == 0 && i != 0 && lastKey == 0) {
|
||||||
System.out.println(" // Sending event #" + i);
|
System.out.println(" // Sending event #" + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the last event was a keydown, then this event is a key-up
|
MonkeyEvent ev = mEventSource.getNextEvent();
|
||||||
if (lastKey != 0) {
|
if (ev != null) {
|
||||||
if (mVerbose > 1) {
|
i++;
|
||||||
try {
|
int injectCode = ev.injectEvent(mWm, mAm, mVerbose);
|
||||||
System.out.println(":SendKey (ACTION_UP):" + lastKey + " // " + KEY_NAMES[lastKey]);
|
if (injectCode == MonkeyEvent.INJECT_FAIL) {
|
||||||
} catch (ArrayIndexOutOfBoundsException e) {
|
if (ev instanceof MonkeyKeyEvent) {
|
||||||
System.out.println(":SendKey (ACTION_UP): " + lastKey + " // Unknown key event");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
if (! mWm.injectKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, lastKey), false)) {
|
|
||||||
mDroppedKeyEvents++;
|
mDroppedKeyEvents++;
|
||||||
|
} else if (ev instanceof MonkeyMotionEvent) {
|
||||||
|
mDroppedPointerEvents++;
|
||||||
|
} else if (ev instanceof MonkeyFlipEvent) {
|
||||||
|
mDroppedFlipEvents++;
|
||||||
}
|
}
|
||||||
} catch (RemoteException ex) {
|
} else if (injectCode == MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION) {
|
||||||
systemCrashed = true;
|
systemCrashed = true;
|
||||||
break;
|
} else if (injectCode == MonkeyEvent.INJECT_ERROR_SECURITY_EXCEPTION) {
|
||||||
|
systemCrashed = !mIgnoreSecurityExceptions;
|
||||||
}
|
}
|
||||||
lastKey = 0;
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// otherwise begin a new event cycle
|
|
||||||
float cls = random.nextFloat();
|
|
||||||
|
|
||||||
boolean touchEvent = cls < mFactors[FACTOR_TOUCH];
|
|
||||||
boolean motionEvent = !touchEvent && (cls < mFactors[FACTOR_MOTION]);
|
|
||||||
if (touchEvent || motionEvent) {
|
|
||||||
try {
|
|
||||||
generateMotionEvent(random, motionEvent);
|
|
||||||
} catch (RemoteException ex) {
|
|
||||||
systemCrashed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cls < mFactors[FACTOR_TRACKBALL]) {
|
|
||||||
try {
|
|
||||||
generateTrackballEvent(random);
|
|
||||||
} catch (RemoteException ex) {
|
|
||||||
systemCrashed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The remaining event categories are injected as key events
|
|
||||||
if (cls < mFactors[FACTOR_NAV]) {
|
|
||||||
lastKey = NAV_KEYS[random.nextInt(NAV_KEYS.length)];
|
|
||||||
} else if (cls < mFactors[FACTOR_MAJORNAV]) {
|
|
||||||
lastKey = MAJOR_NAV_KEYS[random.nextInt(MAJOR_NAV_KEYS.length)];
|
|
||||||
} else if (cls < mFactors[FACTOR_SYSOPS]) {
|
|
||||||
lastKey = SYS_KEYS[random.nextInt(SYS_KEYS.length)];
|
|
||||||
} else if (cls < mFactors[FACTOR_APPSWITCH]) {
|
|
||||||
if (!startRandomActivity(random)) {
|
|
||||||
systemCrashed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
lastKey = 1 + random.nextInt(KeyEvent.MAX_KEYCODE - 1);
|
|
||||||
}
|
|
||||||
if (mVerbose > 0) {
|
|
||||||
try {
|
|
||||||
System.out.println(":SendKey: " + lastKey + " // " + KEY_NAMES[lastKey]);
|
|
||||||
} catch (ArrayIndexOutOfBoundsException e) {
|
|
||||||
System.out.println(":SendKey: " + lastKey + " // Unknown key event");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
if (! mWm.injectKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, lastKey), false)) {
|
|
||||||
mDroppedKeyEvents++;
|
|
||||||
}
|
|
||||||
} catch (RemoteException ex) {
|
|
||||||
systemCrashed = true;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we got this far, we succeeded!
|
// If we got this far, we succeeded!
|
||||||
return mCount;
|
return mCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates a random motion event. This method counts a down, move, and up as one event.
|
|
||||||
*
|
|
||||||
* TODO: Test & fix the selectors when non-zero percentages
|
|
||||||
* TODO: Longpress.
|
|
||||||
* TODO: Fling.
|
|
||||||
* TODO: Meta state
|
|
||||||
* TODO: More useful than the random walk here would be to pick a single random direction
|
|
||||||
* and distance, and divvy it up into a random number of segments. (This would serve to
|
|
||||||
* generate fling gestures, which are important).
|
|
||||||
*
|
|
||||||
* @param random Random number source for positioning
|
|
||||||
* @param motionEvent If false, touch/release. If true, touch/move/release.
|
|
||||||
*
|
|
||||||
* @throws RemoteException
|
|
||||||
*/
|
|
||||||
private void generateMotionEvent(Random random, boolean motionEvent) throws RemoteException {
|
|
||||||
Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
|
|
||||||
|
|
||||||
float x = Math.abs(random.nextInt() % display.getWidth());
|
|
||||||
float y = Math.abs(random.nextInt() % display.getHeight());
|
|
||||||
long downAt = SystemClock.uptimeMillis();
|
|
||||||
boolean drop = false;
|
|
||||||
drop = sendMotionEvent(MotionEvent.ACTION_DOWN, x, y, downAt, "Pointer ACTION_DOWN", false,
|
|
||||||
true);
|
|
||||||
|
|
||||||
// sometimes we'll move during the touch
|
|
||||||
if (motionEvent) {
|
|
||||||
int count = random.nextInt(10);
|
|
||||||
for (int i = 0 ; i < count ; i++) {
|
|
||||||
// generate some slop in the up event
|
|
||||||
x = (x + (random.nextInt() % 10)) % display.getWidth();
|
|
||||||
y = (y + (random.nextInt() % 10)) % display.getHeight();
|
|
||||||
drop |= sendMotionEvent(MotionEvent.ACTION_MOVE, x, y, downAt,
|
|
||||||
"Pointer ACTION_MOVE", true, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO generate some slop in the up event
|
|
||||||
drop |= sendMotionEvent(MotionEvent.ACTION_UP, x, y, downAt, "Pointer ACTION_UP", false,
|
|
||||||
true);
|
|
||||||
|
|
||||||
if (drop) {
|
|
||||||
mDroppedPointerEvents++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends a single motion event, either as a pointer or a trackball.
|
|
||||||
*
|
|
||||||
* @param action Must be one of the ACTION values defined in {@link MotionEvent}
|
|
||||||
* @param x The position, or movement, in the X axis
|
|
||||||
* @param y The position, or movement, in the Y axis
|
|
||||||
* @param downAt The time of the first DOWN must be sent here, and the same value must
|
|
||||||
* be sent for all subsequent events that are related (through the eventual UP event), or
|
|
||||||
* -1 to simply send the current time as the downTime.
|
|
||||||
* @param note This will be displayed when in verbose mode
|
|
||||||
* @param intermediateNote If true, this is an intermediate step (more verbose logging, only)
|
|
||||||
* @param isPointer Use true to send a pointer event, and false to send a trackball event
|
|
||||||
*
|
|
||||||
* @return Returns false if event was dispatched, true if it was dropped for any reason
|
|
||||||
*
|
|
||||||
* @throws RemoteException
|
|
||||||
*/
|
|
||||||
private boolean sendMotionEvent(int action, float x, float y, long downAt, final String note,
|
|
||||||
boolean intermediateNote, boolean isPointer) throws RemoteException {
|
|
||||||
if ((mVerbose > 0 && !intermediateNote) || mVerbose > 1) {
|
|
||||||
System.out.println(":Sending " + note + " x=" + x + " y=" + y);
|
|
||||||
}
|
|
||||||
long eventTime = SystemClock.uptimeMillis();
|
|
||||||
if (downAt == -1) {
|
|
||||||
downAt = eventTime;
|
|
||||||
}
|
|
||||||
final MotionEvent evt = MotionEvent.obtain(downAt, eventTime, action, x, y, 0);
|
|
||||||
if (isPointer) {
|
|
||||||
return ! mWm.injectPointerEvent(evt, false);
|
|
||||||
} else {
|
|
||||||
return ! mWm.injectTrackballEvent(evt, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates a random trackball event. This consists of a sequence of small moves, followed by
|
|
||||||
* an optional single click.
|
|
||||||
*
|
|
||||||
* TODO: Longpress.
|
|
||||||
* TODO: Meta state
|
|
||||||
* TODO: Parameterize the % clicked
|
|
||||||
* TODO: More useful than the random walk here would be to pick a single random direction
|
|
||||||
* and distance, and divvy it up into a random number of segments. (This would serve to
|
|
||||||
* generate fling gestures, which are important).
|
|
||||||
*
|
|
||||||
* @param random Random number source for positioning
|
|
||||||
*
|
|
||||||
* @throws RemoteException
|
|
||||||
*/
|
|
||||||
private void generateTrackballEvent(Random random) throws RemoteException {
|
|
||||||
Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
|
|
||||||
|
|
||||||
boolean drop = false;
|
|
||||||
int count = random.nextInt(10);
|
|
||||||
for (int i = 0; i < 10; ++i) {
|
|
||||||
// generate a small random step
|
|
||||||
int dX = random.nextInt(10) - 5;
|
|
||||||
int dY = random.nextInt(10) - 5;
|
|
||||||
drop |= sendMotionEvent(MotionEvent.ACTION_MOVE, dX, dY, -1, "Trackball ACTION_MOVE",
|
|
||||||
(i > 0), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 10% of trackball moves end with a click
|
|
||||||
if (0 == random.nextInt(10)) {
|
|
||||||
long downAt = SystemClock.uptimeMillis();
|
|
||||||
drop |= sendMotionEvent(MotionEvent.ACTION_DOWN, 0, 0, downAt, "Trackball ACTION_DOWN",
|
|
||||||
true, false);
|
|
||||||
drop |= sendMotionEvent(MotionEvent.ACTION_UP, 0, 0, downAt, "Trackball ACTION_UP",
|
|
||||||
false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (drop) {
|
|
||||||
mDroppedTrackballEvents++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send SIGNAL_USR1 to all processes. This will generate large (5mb) profiling reports
|
* Send SIGNAL_USR1 to all processes. This will generate large (5mb) profiling reports
|
||||||
* in data/misc, so use with care.
|
* in data/misc, so use with care.
|
||||||
@@ -1120,40 +769,6 @@ public class Monkey {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Have the activity manager start a new activity.
|
|
||||||
*
|
|
||||||
* @param random Random number source
|
|
||||||
*
|
|
||||||
* @return Returns true on success, false if there was an error calling
|
|
||||||
* the activity manager.
|
|
||||||
*/
|
|
||||||
private boolean startRandomActivity(Random random) {
|
|
||||||
int numApps = mMainApps.size();
|
|
||||||
int which = random.nextInt(numApps);
|
|
||||||
ComponentName app = mMainApps.get(which);
|
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
||||||
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
||||||
intent.setComponent(app);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
|
|
||||||
if (mVerbose > 0) {
|
|
||||||
System.out.println(":Switch: " + intent.toURI());
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
mAm.startActivity(null, intent, null, null, 0, null, null, 0, false, false);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
System.err.println("** Failed talking with activity manager!");
|
|
||||||
return false;
|
|
||||||
} catch (SecurityException e) {
|
|
||||||
if (mVerbose > 0) {
|
|
||||||
System.out.println("** Permissions error starting activity " + intent.toURI());
|
|
||||||
}
|
|
||||||
return mIgnoreSecurityExceptions; // true = "launched ok" (pretend)
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Watch for appearance of new tombstone files, which indicate native crashes.
|
* Watch for appearance of new tombstone files, which indicate native crashes.
|
||||||
*
|
*
|
||||||
@@ -1185,7 +800,7 @@ public class Monkey {
|
|||||||
/**
|
/**
|
||||||
* Return the next command line option. This has a number of special cases which
|
* Return the next command line option. This has a number of special cases which
|
||||||
* closely, but not exactly, follow the POSIX command line options patterns:
|
* closely, but not exactly, follow the POSIX command line options patterns:
|
||||||
*
|
*
|
||||||
* -- means to stop processing additional options
|
* -- means to stop processing additional options
|
||||||
* -z means option z
|
* -z means option z
|
||||||
* -z ARGS means option z with (non-optional) arguments ARGS
|
* -z ARGS means option z with (non-optional) arguments ARGS
|
||||||
@@ -1274,17 +889,18 @@ public class Monkey {
|
|||||||
* Print how to use this command.
|
* Print how to use this command.
|
||||||
*/
|
*/
|
||||||
private void showUsage() {
|
private void showUsage() {
|
||||||
System.err.println("usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]");
|
System.err.println("usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]");
|
||||||
System.err.println(" [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]");
|
System.err.println(" [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]");
|
||||||
System.err.println(" [--ignore-crashes] [--ignore-timeouts]");
|
System.err.println(" [--ignore-crashes] [--ignore-timeouts]");
|
||||||
System.err.println(" [--ignore-security-exceptions] [--monitor-native-crashes]");
|
System.err.println(" [--ignore-security-exceptions] [--monitor-native-crashes]");
|
||||||
System.err.println(" [--kill-process-after-error] [--hprof]");
|
System.err.println(" [--kill-process-after-error] [--hprof]");
|
||||||
System.err.println(" [--pct-touch PERCENT] [--pct-motion PERCENT]");
|
System.err.println(" [--pct-touch PERCENT] [--pct-motion PERCENT]");
|
||||||
System.err.println(" [--pct-trackball PERCENT] [--pct-syskeys PERCENT]");
|
System.err.println(" [--pct-trackball PERCENT] [--pct-syskeys PERCENT]");
|
||||||
System.err.println(" [--pct-nav PERCENT] [--pct-majornav PERCENT]");
|
System.err.println(" [--pct-nav PERCENT] [--pct-majornav PERCENT]");
|
||||||
System.err.println(" [--pct-appswitch PERCENT] [--pct-anyevent PERCENT]");
|
System.err.println(" [--pct-appswitch PERCENT] [--pct-flip PERCENT]");
|
||||||
System.err.println(" [--wait-dbg] [--dbg-no-events]");
|
System.err.println(" [--pct-anyevent PERCENT]");
|
||||||
System.err.println(" [-s SEED] [-v [-v] ...] [--throttle MILLISEC]");
|
System.err.println(" [--wait-dbg] [--dbg-no-events] [-f scriptfile]");
|
||||||
System.err.println(" COUNT");
|
System.err.println(" [-s SEED] [-v [-v] ...] [--throttle MILLISEC]");
|
||||||
}
|
System.err.println(" COUNT");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.app.IActivityManager;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* monkey activity event
|
||||||
|
*/
|
||||||
|
public class MonkeyActivityEvent extends MonkeyEvent {
|
||||||
|
private ComponentName mApp;
|
||||||
|
|
||||||
|
public MonkeyActivityEvent(ComponentName app) {
|
||||||
|
super(EVENT_TYPE_ACTIVITY);
|
||||||
|
mApp = app;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Intent for the new activity
|
||||||
|
*/
|
||||||
|
private Intent getEvent() {
|
||||||
|
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
|
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||||
|
intent.setComponent(mApp);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
|
||||||
|
Intent intent = getEvent();
|
||||||
|
if (verbose > 0) {
|
||||||
|
System.out.println(":Switch: " + intent.toURI());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
iam.startActivity(null, intent, null, null, 0, null, null, 0,
|
||||||
|
false, false);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
System.err.println("** Failed talking with activity manager!");
|
||||||
|
return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
if (verbose > 0) {
|
||||||
|
System.out.println("** Permissions error starting activity "
|
||||||
|
+ intent.toURI());
|
||||||
|
}
|
||||||
|
return MonkeyEvent.INJECT_ERROR_SECURITY_EXCEPTION;
|
||||||
|
}
|
||||||
|
return MonkeyEvent.INJECT_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
61
cmds/monkey/src/com/android/commands/monkey/MonkeyEvent.java
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.app.IActivityManager;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* abstract class for monkey event
|
||||||
|
*/
|
||||||
|
public abstract class MonkeyEvent {
|
||||||
|
protected int eventType;
|
||||||
|
public static final int EVENT_TYPE_KEY = 0;
|
||||||
|
public static final int EVENT_TYPE_POINTER = 1;
|
||||||
|
public static final int EVENT_TYPE_TRACKBALL = 2;
|
||||||
|
public static final int EVENT_TYPE_ACTIVITY = 3;
|
||||||
|
public static final int EVENT_TYPE_FLIP = 4; // Keyboard flip
|
||||||
|
|
||||||
|
public static final int INJECT_SUCCESS = 1;
|
||||||
|
public static final int INJECT_FAIL = 0;
|
||||||
|
|
||||||
|
// error code for remote exception during injection
|
||||||
|
public static final int INJECT_ERROR_REMOTE_EXCEPTION = -1;
|
||||||
|
// error code for security exception during injection
|
||||||
|
public static final int INJECT_ERROR_SECURITY_EXCEPTION = -2;
|
||||||
|
|
||||||
|
public MonkeyEvent(int type) {
|
||||||
|
eventType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return event type
|
||||||
|
*/
|
||||||
|
public int getEventType() {
|
||||||
|
return eventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* a method for injecting event
|
||||||
|
* @param iwm wires to current window manager
|
||||||
|
* @param iam wires to current activity manager
|
||||||
|
* @param verbose a log switch
|
||||||
|
* @return INJECT_SUCCESS if it goes through, and INJECT_FAIL if it fails
|
||||||
|
* in the case of exceptions, return its corresponding error code
|
||||||
|
*/
|
||||||
|
public abstract int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose);
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* event source interface
|
||||||
|
*/
|
||||||
|
public interface MonkeyEventSource {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return the next monkey event from the source
|
||||||
|
*/
|
||||||
|
public MonkeyEvent getNextEvent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set verbose to allow different level of log
|
||||||
|
* @param verbose output mode? 1= verbose, 2=very verbose
|
||||||
|
*/
|
||||||
|
public void setVerbose(int verbose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check whether precondition is satisfied
|
||||||
|
* @return false if something fails, e.g. factor failure in random source
|
||||||
|
* or file can not open from script source etc
|
||||||
|
*/
|
||||||
|
public boolean validate();
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 Google Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import android.app.IActivityManager;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
/**
|
||||||
|
* monkey keyboard flip event
|
||||||
|
*/
|
||||||
|
public class MonkeyFlipEvent extends MonkeyEvent {
|
||||||
|
|
||||||
|
// Raw keyboard flip event data
|
||||||
|
// Works on emulator and dream
|
||||||
|
|
||||||
|
private static final byte[] FLIP_0 = {
|
||||||
|
0x7f, 0x06,
|
||||||
|
0x00, 0x00,
|
||||||
|
(byte) 0xe0, 0x39,
|
||||||
|
0x01, 0x00,
|
||||||
|
0x05, 0x00,
|
||||||
|
0x00, 0x00,
|
||||||
|
0x01, 0x00,
|
||||||
|
0x00, 0x00 };
|
||||||
|
|
||||||
|
private static final byte[] FLIP_1 = {
|
||||||
|
(byte) 0x85, 0x06,
|
||||||
|
0x00, 0x00,
|
||||||
|
(byte) 0x9f, (byte) 0xa5,
|
||||||
|
0x0c, 0x00,
|
||||||
|
0x05, 0x00,
|
||||||
|
0x00, 0x00,
|
||||||
|
0x00, 0x00,
|
||||||
|
0x00, 0x00 };
|
||||||
|
|
||||||
|
private final boolean mKeyboardOpen;
|
||||||
|
|
||||||
|
public MonkeyFlipEvent(boolean keyboardOpen) {
|
||||||
|
super(EVENT_TYPE_FLIP);
|
||||||
|
mKeyboardOpen = keyboardOpen;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
|
||||||
|
if (verbose > 0) {
|
||||||
|
System.out.println(":Sending Flip keyboardOpen=" + mKeyboardOpen);
|
||||||
|
}
|
||||||
|
|
||||||
|
// inject flip event
|
||||||
|
try {
|
||||||
|
FileOutputStream f = new FileOutputStream("/dev/input/event0");
|
||||||
|
f.write(mKeyboardOpen ? FLIP_0 : FLIP_1);
|
||||||
|
f.close();
|
||||||
|
return MonkeyEvent.INJECT_SUCCESS;
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Got IOException performing flip" + e);
|
||||||
|
return MonkeyEvent.INJECT_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
125
cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.app.IActivityManager;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
/**
|
||||||
|
* monkey key event
|
||||||
|
*/
|
||||||
|
public class MonkeyKeyEvent extends MonkeyEvent {
|
||||||
|
private long mDownTime = -1;
|
||||||
|
private int mMetaState = -1;
|
||||||
|
private int mAction = -1;
|
||||||
|
private int mKeyCode = -1;
|
||||||
|
private int mScancode = -1;
|
||||||
|
private int mRepeatCount = -1;
|
||||||
|
private int mDeviceId = -1;
|
||||||
|
private long mEventTime = -1;
|
||||||
|
|
||||||
|
public MonkeyKeyEvent(int action, int keycode) {
|
||||||
|
super(EVENT_TYPE_KEY);
|
||||||
|
mAction = action;
|
||||||
|
mKeyCode = keycode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MonkeyKeyEvent(long downTime, long eventTime, int action,
|
||||||
|
int code, int repeat, int metaState,
|
||||||
|
int device, int scancode) {
|
||||||
|
super(EVENT_TYPE_KEY);
|
||||||
|
|
||||||
|
mAction = action;
|
||||||
|
mKeyCode = code;
|
||||||
|
mMetaState = metaState;
|
||||||
|
mScancode = scancode;
|
||||||
|
mRepeatCount = repeat;
|
||||||
|
mDeviceId = device;
|
||||||
|
mDownTime = downTime;
|
||||||
|
mEventTime = eventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getKeyCode() {
|
||||||
|
return mKeyCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAction() {
|
||||||
|
return mAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getDownTime() {
|
||||||
|
return mDownTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getEventTime() {
|
||||||
|
return mEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDownTime(long downTime) {
|
||||||
|
mDownTime = downTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEventTime(long eventTime) {
|
||||||
|
mEventTime = eventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the key event
|
||||||
|
*/
|
||||||
|
private KeyEvent getEvent() {
|
||||||
|
if (mDeviceId < 0) {
|
||||||
|
return new KeyEvent(mAction, mKeyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// for scripts
|
||||||
|
return new KeyEvent(mDownTime, mEventTime, mAction,
|
||||||
|
mKeyCode, mRepeatCount, mMetaState, mDeviceId, mScancode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
|
||||||
|
if (verbose > 1) {
|
||||||
|
String note;
|
||||||
|
if (mAction == KeyEvent.ACTION_UP) {
|
||||||
|
note = "ACTION_UP";
|
||||||
|
} else {
|
||||||
|
note = "ACTION_DOWN";
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println(":SendKey (" + note + "): "
|
||||||
|
+ mKeyCode + " // "
|
||||||
|
+ MonkeySourceRandom.getKeyName(mKeyCode));
|
||||||
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
|
System.out.println(":SendKey (ACTION_UP): "
|
||||||
|
+ mKeyCode + " // Unknown key event");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// inject key event
|
||||||
|
try {
|
||||||
|
if (!iwm.injectKeyEvent(getEvent(), false)) {
|
||||||
|
return MonkeyEvent.INJECT_FAIL;
|
||||||
|
}
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
return MonkeyEvent.INJECT_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.app.IActivityManager;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.view.IWindowManager;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* monkey motion event
|
||||||
|
*/
|
||||||
|
public class MonkeyMotionEvent extends MonkeyEvent {
|
||||||
|
private long mDownTime = -1;
|
||||||
|
private long mEventTime = -1;
|
||||||
|
private int mAction = -1;
|
||||||
|
private float mX = -1;
|
||||||
|
private float mY = -1;
|
||||||
|
private float mPressure = -1;
|
||||||
|
private float mSize = -1;
|
||||||
|
private int mMetaState = -1;
|
||||||
|
private float mXPrecision = -1;
|
||||||
|
private float mYPrecision = -1;
|
||||||
|
private int mDeviceId = -1;
|
||||||
|
private int mEdgeFlags = -1;
|
||||||
|
|
||||||
|
//If true, this is an intermediate step (more verbose logging, only)
|
||||||
|
private boolean mIntermediateNote;
|
||||||
|
|
||||||
|
public MonkeyMotionEvent(int type, long downAt, int action,
|
||||||
|
float x, float y, int metaState) {
|
||||||
|
super(type);
|
||||||
|
mDownTime = downAt;
|
||||||
|
mAction = action;
|
||||||
|
mX = x;
|
||||||
|
mY = y;
|
||||||
|
mMetaState = metaState;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MonkeyMotionEvent(int type, long downTime, long eventTime, int action,
|
||||||
|
float x, float y, float pressure, float size, int metaState,
|
||||||
|
float xPrecision, float yPrecision, int deviceId, int edgeFlags) {
|
||||||
|
super(type);
|
||||||
|
mDownTime = downTime;
|
||||||
|
mEventTime = eventTime;
|
||||||
|
mAction = action;
|
||||||
|
mX = x;
|
||||||
|
mY = y;
|
||||||
|
mPressure = pressure;
|
||||||
|
mSize = size;
|
||||||
|
mMetaState = metaState;
|
||||||
|
mXPrecision = xPrecision;
|
||||||
|
mYPrecision = yPrecision;
|
||||||
|
mDeviceId = deviceId;
|
||||||
|
mEdgeFlags = edgeFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntermediateNote(boolean b) {
|
||||||
|
mIntermediateNote = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getIntermediateNote() {
|
||||||
|
return mIntermediateNote;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getX() {
|
||||||
|
return mX;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getY() {
|
||||||
|
return mY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAction() {
|
||||||
|
return mAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getDownTime() {
|
||||||
|
return mDownTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getEventTime() {
|
||||||
|
return mEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDownTime(long downTime) {
|
||||||
|
mDownTime = downTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEventTime(long eventTime) {
|
||||||
|
mEventTime = eventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return instance of a motion event
|
||||||
|
*/
|
||||||
|
private MotionEvent getEvent() {
|
||||||
|
if (mDeviceId < 0) {
|
||||||
|
return MotionEvent.obtain(mDownTime, SystemClock.uptimeMillis(),
|
||||||
|
mAction, mX, mY, mMetaState);
|
||||||
|
}
|
||||||
|
|
||||||
|
// for scripts
|
||||||
|
return MotionEvent.obtain(mDownTime, mEventTime,
|
||||||
|
mAction, mX, mY, mPressure, mSize, mMetaState,
|
||||||
|
mXPrecision, mYPrecision, mDeviceId, mEdgeFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
|
||||||
|
|
||||||
|
String note;
|
||||||
|
if ((verbose > 0 && !mIntermediateNote) || verbose > 1) {
|
||||||
|
if (mAction == MotionEvent.ACTION_DOWN) {
|
||||||
|
note = "DOWN";
|
||||||
|
} else if (mAction == MotionEvent.ACTION_UP) {
|
||||||
|
note = "UP";
|
||||||
|
} else {
|
||||||
|
note = "MOVE";
|
||||||
|
}
|
||||||
|
System.out.println(":Sending Pointer ACTION_" + note +
|
||||||
|
" x=" + mX + " y=" + mY);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
int type = this.getEventType();
|
||||||
|
MotionEvent me = getEvent();
|
||||||
|
|
||||||
|
if ((type == MonkeyEvent.EVENT_TYPE_POINTER &&
|
||||||
|
!iwm.injectPointerEvent(me, false))
|
||||||
|
|| (type == MonkeyEvent.EVENT_TYPE_TRACKBALL &&
|
||||||
|
!iwm.injectTrackballEvent(me, false))) {
|
||||||
|
return MonkeyEvent.INJECT_FAIL;
|
||||||
|
}
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
|
||||||
|
}
|
||||||
|
return MonkeyEvent.INJECT_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,465 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.view.Display;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.WindowManagerImpl;
|
||||||
|
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* monkey event queue
|
||||||
|
*/
|
||||||
|
public class MonkeySourceRandom implements MonkeyEventSource{
|
||||||
|
/** Key events that move around the UI. */
|
||||||
|
private static final int[] NAV_KEYS = {
|
||||||
|
KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN,
|
||||||
|
KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT,
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Key events that perform major navigation options (so shouldn't be sent
|
||||||
|
* as much).
|
||||||
|
*/
|
||||||
|
private static final int[] MAJOR_NAV_KEYS = {
|
||||||
|
KeyEvent.KEYCODE_MENU, /*KeyEvent.KEYCODE_SOFT_RIGHT,*/
|
||||||
|
KeyEvent.KEYCODE_DPAD_CENTER,
|
||||||
|
};
|
||||||
|
/** Key events that perform system operations. */
|
||||||
|
private static final int[] SYS_KEYS = {
|
||||||
|
KeyEvent.KEYCODE_HOME, KeyEvent.KEYCODE_BACK,
|
||||||
|
KeyEvent.KEYCODE_CALL, KeyEvent.KEYCODE_ENDCALL,
|
||||||
|
KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_VOLUME_DOWN,
|
||||||
|
};
|
||||||
|
/** Nice names for all key events. */
|
||||||
|
private static final String[] KEY_NAMES = {
|
||||||
|
"KEYCODE_UNKNOWN",
|
||||||
|
"KEYCODE_MENU",
|
||||||
|
"KEYCODE_SOFT_RIGHT",
|
||||||
|
"KEYCODE_HOME",
|
||||||
|
"KEYCODE_BACK",
|
||||||
|
"KEYCODE_CALL",
|
||||||
|
"KEYCODE_ENDCALL",
|
||||||
|
"KEYCODE_0",
|
||||||
|
"KEYCODE_1",
|
||||||
|
"KEYCODE_2",
|
||||||
|
"KEYCODE_3",
|
||||||
|
"KEYCODE_4",
|
||||||
|
"KEYCODE_5",
|
||||||
|
"KEYCODE_6",
|
||||||
|
"KEYCODE_7",
|
||||||
|
"KEYCODE_8",
|
||||||
|
"KEYCODE_9",
|
||||||
|
"KEYCODE_STAR",
|
||||||
|
"KEYCODE_POUND",
|
||||||
|
"KEYCODE_DPAD_UP",
|
||||||
|
"KEYCODE_DPAD_DOWN",
|
||||||
|
"KEYCODE_DPAD_LEFT",
|
||||||
|
"KEYCODE_DPAD_RIGHT",
|
||||||
|
"KEYCODE_DPAD_CENTER",
|
||||||
|
"KEYCODE_VOLUME_UP",
|
||||||
|
"KEYCODE_VOLUME_DOWN",
|
||||||
|
"KEYCODE_POWER",
|
||||||
|
"KEYCODE_CAMERA",
|
||||||
|
"KEYCODE_CLEAR",
|
||||||
|
"KEYCODE_A",
|
||||||
|
"KEYCODE_B",
|
||||||
|
"KEYCODE_C",
|
||||||
|
"KEYCODE_D",
|
||||||
|
"KEYCODE_E",
|
||||||
|
"KEYCODE_F",
|
||||||
|
"KEYCODE_G",
|
||||||
|
"KEYCODE_H",
|
||||||
|
"KEYCODE_I",
|
||||||
|
"KEYCODE_J",
|
||||||
|
"KEYCODE_K",
|
||||||
|
"KEYCODE_L",
|
||||||
|
"KEYCODE_M",
|
||||||
|
"KEYCODE_N",
|
||||||
|
"KEYCODE_O",
|
||||||
|
"KEYCODE_P",
|
||||||
|
"KEYCODE_Q",
|
||||||
|
"KEYCODE_R",
|
||||||
|
"KEYCODE_S",
|
||||||
|
"KEYCODE_T",
|
||||||
|
"KEYCODE_U",
|
||||||
|
"KEYCODE_V",
|
||||||
|
"KEYCODE_W",
|
||||||
|
"KEYCODE_X",
|
||||||
|
"KEYCODE_Y",
|
||||||
|
"KEYCODE_Z",
|
||||||
|
"KEYCODE_COMMA",
|
||||||
|
"KEYCODE_PERIOD",
|
||||||
|
"KEYCODE_ALT_LEFT",
|
||||||
|
"KEYCODE_ALT_RIGHT",
|
||||||
|
"KEYCODE_SHIFT_LEFT",
|
||||||
|
"KEYCODE_SHIFT_RIGHT",
|
||||||
|
"KEYCODE_TAB",
|
||||||
|
"KEYCODE_SPACE",
|
||||||
|
"KEYCODE_SYM",
|
||||||
|
"KEYCODE_EXPLORER",
|
||||||
|
"KEYCODE_ENVELOPE",
|
||||||
|
"KEYCODE_ENTER",
|
||||||
|
"KEYCODE_DEL",
|
||||||
|
"KEYCODE_GRAVE",
|
||||||
|
"KEYCODE_MINUS",
|
||||||
|
"KEYCODE_EQUALS",
|
||||||
|
"KEYCODE_LEFT_BRACKET",
|
||||||
|
"KEYCODE_RIGHT_BRACKET",
|
||||||
|
"KEYCODE_BACKSLASH",
|
||||||
|
"KEYCODE_SEMICOLON",
|
||||||
|
"KEYCODE_APOSTROPHE",
|
||||||
|
"KEYCODE_SLASH",
|
||||||
|
"KEYCODE_AT",
|
||||||
|
"KEYCODE_NUM",
|
||||||
|
"KEYCODE_HEADSETHOOK",
|
||||||
|
"KEYCODE_FOCUS",
|
||||||
|
"KEYCODE_PLUS",
|
||||||
|
"KEYCODE_MENU",
|
||||||
|
"KEYCODE_NOTIFICATION",
|
||||||
|
"KEYCODE_SEARCH",
|
||||||
|
"KEYCODE_PLAYPAUSE",
|
||||||
|
"KEYCODE_STOP",
|
||||||
|
"KEYCODE_NEXTSONG",
|
||||||
|
"KEYCODE_PREVIOUSSONG",
|
||||||
|
"KEYCODE_REWIND",
|
||||||
|
"KEYCODE_FORWARD",
|
||||||
|
|
||||||
|
"TAG_LAST_KEYCODE" // EOL. used to keep the lists in sync
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final int FACTOR_TOUCH = 0;
|
||||||
|
public static final int FACTOR_MOTION = 1;
|
||||||
|
public static final int FACTOR_TRACKBALL = 2;
|
||||||
|
public static final int FACTOR_NAV = 3;
|
||||||
|
public static final int FACTOR_MAJORNAV = 4;
|
||||||
|
public static final int FACTOR_SYSOPS = 5;
|
||||||
|
public static final int FACTOR_APPSWITCH = 6;
|
||||||
|
public static final int FACTOR_FLIP = 7;
|
||||||
|
public static final int FACTOR_ANYTHING = 8;
|
||||||
|
public static final int FACTORZ_COUNT = 9; // should be last+1
|
||||||
|
|
||||||
|
|
||||||
|
/** percentages for each type of event. These will be remapped to working
|
||||||
|
* values after we read any optional values.
|
||||||
|
**/
|
||||||
|
private float[] mFactors = new float[FACTORZ_COUNT];
|
||||||
|
private ArrayList<ComponentName> mMainApps;
|
||||||
|
private int mEventCount = 0; //total number of events generated so far
|
||||||
|
private LinkedList<MonkeyEvent> mQ = new LinkedList<MonkeyEvent>();
|
||||||
|
private Random mRandom;
|
||||||
|
private int mVerbose = 0;
|
||||||
|
|
||||||
|
private boolean mKeyboardOpen = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the last name in the key list
|
||||||
|
*/
|
||||||
|
public static String getLastKeyName() {
|
||||||
|
return KEY_NAMES[KeyEvent.getMaxKeyCode() + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getKeyName(int keycode) {
|
||||||
|
return KEY_NAMES[keycode];
|
||||||
|
}
|
||||||
|
|
||||||
|
public MonkeySourceRandom(long seed, ArrayList<ComponentName> MainApps) {
|
||||||
|
// default values for random distributions
|
||||||
|
// note, these are straight percentages, to match user input (cmd line args)
|
||||||
|
// but they will be converted to 0..1 values before the main loop runs.
|
||||||
|
mFactors[FACTOR_TOUCH] = 15.0f;
|
||||||
|
mFactors[FACTOR_MOTION] = 10.0f;
|
||||||
|
mFactors[FACTOR_TRACKBALL] = 15.0f;
|
||||||
|
mFactors[FACTOR_NAV] = 25.0f;
|
||||||
|
mFactors[FACTOR_MAJORNAV] = 15.0f;
|
||||||
|
mFactors[FACTOR_SYSOPS] = 2.0f;
|
||||||
|
mFactors[FACTOR_APPSWITCH] = 2.0f;
|
||||||
|
mFactors[FACTOR_FLIP] = 1.0f;
|
||||||
|
mFactors[FACTOR_ANYTHING] = 15.0f;
|
||||||
|
|
||||||
|
mRandom = new SecureRandom();
|
||||||
|
mRandom.setSeed((seed == 0) ? -1 : seed);
|
||||||
|
mMainApps = MainApps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust the percentages (after applying user values) and then normalize to a 0..1 scale.
|
||||||
|
*/
|
||||||
|
private boolean adjustEventFactors() {
|
||||||
|
// go through all values and compute totals for user & default values
|
||||||
|
float userSum = 0.0f;
|
||||||
|
float defaultSum = 0.0f;
|
||||||
|
int defaultCount = 0;
|
||||||
|
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
||||||
|
if (mFactors[i] <= 0.0f) { // user values are zero or negative
|
||||||
|
userSum -= mFactors[i];
|
||||||
|
} else {
|
||||||
|
defaultSum += mFactors[i];
|
||||||
|
++defaultCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the user request was > 100%, reject it
|
||||||
|
if (userSum > 100.0f) {
|
||||||
|
System.err.println("** Event weights > 100%");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the user specified all of the weights, then they need to be 100%
|
||||||
|
if (defaultCount == 0 && (userSum < 99.9f || userSum > 100.1f)) {
|
||||||
|
System.err.println("** Event weights != 100%");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compute the adjustment necessary
|
||||||
|
float defaultsTarget = (100.0f - userSum);
|
||||||
|
float defaultsAdjustment = defaultsTarget / defaultSum;
|
||||||
|
|
||||||
|
// fix all values, by adjusting defaults, or flipping user values back to >0
|
||||||
|
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
||||||
|
if (mFactors[i] <= 0.0f) { // user values are zero or negative
|
||||||
|
mFactors[i] = -mFactors[i];
|
||||||
|
} else {
|
||||||
|
mFactors[i] *= defaultsAdjustment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if verbose, show factors
|
||||||
|
|
||||||
|
if (mVerbose > 0) {
|
||||||
|
System.out.println("// Event percentages:");
|
||||||
|
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
||||||
|
System.out.println("// " + i + ": " + mFactors[i] + "%");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, normalize and convert to running sum
|
||||||
|
float sum = 0.0f;
|
||||||
|
for (int i = 0; i < FACTORZ_COUNT; ++i) {
|
||||||
|
sum += mFactors[i] / 100.0f;
|
||||||
|
mFactors[i] = sum;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set the factors
|
||||||
|
*
|
||||||
|
* @param factors: percentages for each type of event
|
||||||
|
*/
|
||||||
|
public void setFactors(float factors[]) {
|
||||||
|
int c = FACTORZ_COUNT;
|
||||||
|
if (factors.length < c) {
|
||||||
|
c = factors.length;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < c; i++)
|
||||||
|
mFactors[i] = factors[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFactors(int index, float v) {
|
||||||
|
mFactors[index] = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a random motion event. This method counts a down, move, and up as multiple events.
|
||||||
|
*
|
||||||
|
* TODO: Test & fix the selectors when non-zero percentages
|
||||||
|
* TODO: Longpress.
|
||||||
|
* TODO: Fling.
|
||||||
|
* TODO: Meta state
|
||||||
|
* TODO: More useful than the random walk here would be to pick a single random direction
|
||||||
|
* and distance, and divvy it up into a random number of segments. (This would serve to
|
||||||
|
* generate fling gestures, which are important).
|
||||||
|
*
|
||||||
|
* @param random Random number source for positioning
|
||||||
|
* @param motionEvent If false, touch/release. If true, touch/move/release.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void generateMotionEvent(Random random, boolean motionEvent){
|
||||||
|
|
||||||
|
Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
|
||||||
|
|
||||||
|
float x = Math.abs(random.nextInt() % display.getWidth());
|
||||||
|
float y = Math.abs(random.nextInt() % display.getHeight());
|
||||||
|
long downAt = SystemClock.uptimeMillis();
|
||||||
|
long eventTime = SystemClock.uptimeMillis();
|
||||||
|
if (downAt == -1) {
|
||||||
|
downAt = eventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
MonkeyMotionEvent e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_POINTER,
|
||||||
|
downAt, MotionEvent.ACTION_DOWN, x, y, 0);
|
||||||
|
e.setIntermediateNote(false);
|
||||||
|
mQ.addLast(e);
|
||||||
|
|
||||||
|
// sometimes we'll move during the touch
|
||||||
|
if (motionEvent) {
|
||||||
|
int count = random.nextInt(10);
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
// generate some slop in the up event
|
||||||
|
x = (x + (random.nextInt() % 10)) % display.getWidth();
|
||||||
|
y = (y + (random.nextInt() % 10)) % display.getHeight();
|
||||||
|
|
||||||
|
e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_POINTER,
|
||||||
|
downAt, MotionEvent.ACTION_MOVE, x, y, 0);
|
||||||
|
e.setIntermediateNote(true);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO generate some slop in the up event
|
||||||
|
e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_POINTER,
|
||||||
|
downAt, MotionEvent.ACTION_UP, x, y, 0);
|
||||||
|
e.setIntermediateNote(false);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a random trackball event. This consists of a sequence of small moves, followed by
|
||||||
|
* an optional single click.
|
||||||
|
*
|
||||||
|
* TODO: Longpress.
|
||||||
|
* TODO: Meta state
|
||||||
|
* TODO: Parameterize the % clicked
|
||||||
|
* TODO: More useful than the random walk here would be to pick a single random direction
|
||||||
|
* and distance, and divvy it up into a random number of segments. (This would serve to
|
||||||
|
* generate fling gestures, which are important).
|
||||||
|
*
|
||||||
|
* @param random Random number source for positioning
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void generateTrackballEvent(Random random) {
|
||||||
|
Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
|
||||||
|
|
||||||
|
boolean drop = false;
|
||||||
|
int count = random.nextInt(10);
|
||||||
|
MonkeyMotionEvent e;
|
||||||
|
for (int i = 0; i < 10; ++i) {
|
||||||
|
// generate a small random step
|
||||||
|
int dX = random.nextInt(10) - 5;
|
||||||
|
int dY = random.nextInt(10) - 5;
|
||||||
|
|
||||||
|
|
||||||
|
e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_TRACKBALL, -1,
|
||||||
|
MotionEvent.ACTION_MOVE, dX, dY, 0);
|
||||||
|
e.setIntermediateNote(i > 0);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 10% of trackball moves end with a click
|
||||||
|
if (0 == random.nextInt(10)) {
|
||||||
|
long downAt = SystemClock.uptimeMillis();
|
||||||
|
|
||||||
|
|
||||||
|
e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_TRACKBALL, downAt,
|
||||||
|
MotionEvent.ACTION_DOWN, 0, 0, 0);
|
||||||
|
e.setIntermediateNote(true);
|
||||||
|
mQ.addLast(e);
|
||||||
|
|
||||||
|
|
||||||
|
e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_TRACKBALL, downAt,
|
||||||
|
MotionEvent.ACTION_UP, 0, 0, 0);
|
||||||
|
e.setIntermediateNote(false);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* generate a random event based on mFactor
|
||||||
|
*/
|
||||||
|
private void generateEvents() {
|
||||||
|
float cls = mRandom.nextFloat();
|
||||||
|
int lastKey = 0;
|
||||||
|
|
||||||
|
boolean touchEvent = cls < mFactors[FACTOR_TOUCH];
|
||||||
|
boolean motionEvent = !touchEvent && (cls < mFactors[FACTOR_MOTION]);
|
||||||
|
if (touchEvent || motionEvent) {
|
||||||
|
generateMotionEvent(mRandom, motionEvent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cls < mFactors[FACTOR_TRACKBALL]) {
|
||||||
|
generateTrackballEvent(mRandom);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The remaining event categories are injected as key events
|
||||||
|
if (cls < mFactors[FACTOR_NAV]) {
|
||||||
|
lastKey = NAV_KEYS[mRandom.nextInt(NAV_KEYS.length)];
|
||||||
|
} else if (cls < mFactors[FACTOR_MAJORNAV]) {
|
||||||
|
lastKey = MAJOR_NAV_KEYS[mRandom.nextInt(MAJOR_NAV_KEYS.length)];
|
||||||
|
} else if (cls < mFactors[FACTOR_SYSOPS]) {
|
||||||
|
lastKey = SYS_KEYS[mRandom.nextInt(SYS_KEYS.length)];
|
||||||
|
} else if (cls < mFactors[FACTOR_APPSWITCH]) {
|
||||||
|
MonkeyActivityEvent e = new MonkeyActivityEvent(mMainApps.get(
|
||||||
|
mRandom.nextInt(mMainApps.size())));
|
||||||
|
mQ.addLast(e);
|
||||||
|
return;
|
||||||
|
} else if (cls < mFactors[FACTOR_FLIP]) {
|
||||||
|
MonkeyFlipEvent e = new MonkeyFlipEvent(mKeyboardOpen);
|
||||||
|
mKeyboardOpen = !mKeyboardOpen;
|
||||||
|
mQ.addLast(e);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
lastKey = 1 + mRandom.nextInt(KeyEvent.getMaxKeyCode() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
MonkeyKeyEvent e = new MonkeyKeyEvent(KeyEvent.ACTION_DOWN, lastKey);
|
||||||
|
mQ.addLast(e);
|
||||||
|
|
||||||
|
e = new MonkeyKeyEvent(KeyEvent.ACTION_UP, lastKey);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean validate() {
|
||||||
|
//check factors
|
||||||
|
return adjustEventFactors();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVerbose(int verbose) {
|
||||||
|
mVerbose = verbose;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* generate an activity event
|
||||||
|
*/
|
||||||
|
public void generateActivity() {
|
||||||
|
MonkeyActivityEvent e = new MonkeyActivityEvent(mMainApps.get(
|
||||||
|
mRandom.nextInt(mMainApps.size())));
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* if the queue is empty, we generate events first
|
||||||
|
* @return the first event in the queue
|
||||||
|
*/
|
||||||
|
public MonkeyEvent getNextEvent() {
|
||||||
|
if (mQ.isEmpty()) {
|
||||||
|
generateEvents();
|
||||||
|
}
|
||||||
|
mEventCount++;
|
||||||
|
MonkeyEvent e = mQ.getFirst();
|
||||||
|
mQ.removeFirst();
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,427 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.commands.monkey;
|
||||||
|
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* monkey event queue. It takes a script to produce events
|
||||||
|
*
|
||||||
|
* sample script format:
|
||||||
|
* type= raw events
|
||||||
|
* count= 10
|
||||||
|
* speed= 1.0
|
||||||
|
* captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,
|
||||||
|
* 0.06666667,0,0.0,0.0,65539,0)
|
||||||
|
* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
|
||||||
|
* captureDispatchFlip(true)
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
public class MonkeySourceScript implements MonkeyEventSource{
|
||||||
|
private int mEventCountInScript = 0; //total number of events in the file
|
||||||
|
private int mVerbose = 0;
|
||||||
|
private double mSpeed = 1.0;
|
||||||
|
private String mScriptFileName;
|
||||||
|
private LinkedList<MonkeyEvent> mQ = new LinkedList<MonkeyEvent>();
|
||||||
|
|
||||||
|
private static final String HEADER_TYPE = "type=";
|
||||||
|
private static final String HEADER_COUNT = "count=";
|
||||||
|
private static final String HEADER_SPEED = "speed=";
|
||||||
|
|
||||||
|
private long mLastRecordedDownTimeKey = 0;
|
||||||
|
private long mLastRecordedDownTimeMotion = 0;
|
||||||
|
private long mLastExportDownTimeKey = 0;
|
||||||
|
private long mLastExportDownTimeMotion = 0;
|
||||||
|
private long mLastExportEventTime = -1;
|
||||||
|
private long mLastRecordedEventTime = -1;
|
||||||
|
|
||||||
|
private static final boolean THIS_DEBUG = false;
|
||||||
|
// a parameter that compensates the difference of real elapsed time and
|
||||||
|
// time in theory
|
||||||
|
private static final long SLEEP_COMPENSATE_DIFF = 16;
|
||||||
|
|
||||||
|
// maximum number of events that we read at one time
|
||||||
|
private static final int MAX_ONE_TIME_READS = 100;
|
||||||
|
|
||||||
|
// number of additional events added to the script
|
||||||
|
// add HOME_KEY down and up events to make start UI consistent in each round
|
||||||
|
private static final int POLICY_ADDITIONAL_EVENT_COUNT = 2;
|
||||||
|
|
||||||
|
// event key word in the capture log
|
||||||
|
private static final String EVENT_KEYWORD_POINTER = "DispatchPointer";
|
||||||
|
private static final String EVENT_KEYWORD_TRACKBALL = "DispatchTrackball";
|
||||||
|
private static final String EVENT_KEYWORD_KEY = "DispatchKey";
|
||||||
|
private static final String EVENT_KEYWORD_FLIP = "DispatchFlip";
|
||||||
|
|
||||||
|
// a line at the end of the header
|
||||||
|
private static final String STARTING_DATA_LINE = "start data >>";
|
||||||
|
private boolean mFileOpened = false;
|
||||||
|
FileInputStream mFStream;
|
||||||
|
DataInputStream mInputStream;
|
||||||
|
BufferedReader mBufferReader;
|
||||||
|
|
||||||
|
public MonkeySourceScript(String filename) {
|
||||||
|
mScriptFileName = filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return the number of total events that will be generated in a round
|
||||||
|
*/
|
||||||
|
public int getOneRoundEventCount() {
|
||||||
|
//plus one home key down and up event
|
||||||
|
return mEventCountInScript + POLICY_ADDITIONAL_EVENT_COUNT;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetValue() {
|
||||||
|
mLastRecordedDownTimeKey = 0;
|
||||||
|
mLastRecordedDownTimeMotion = 0;
|
||||||
|
mLastExportDownTimeKey = 0;
|
||||||
|
mLastExportDownTimeMotion = 0;
|
||||||
|
mLastRecordedEventTime = -1;
|
||||||
|
mLastExportEventTime = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean readScriptHeader() {
|
||||||
|
mEventCountInScript = -1;
|
||||||
|
mFileOpened = false;
|
||||||
|
try {
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("reading script header");
|
||||||
|
}
|
||||||
|
|
||||||
|
mFStream = new FileInputStream(mScriptFileName);
|
||||||
|
mInputStream = new DataInputStream(mFStream);
|
||||||
|
mBufferReader = new BufferedReader(
|
||||||
|
new InputStreamReader(mInputStream));
|
||||||
|
String sLine;
|
||||||
|
while ((sLine = mBufferReader.readLine()) != null) {
|
||||||
|
sLine = sLine.trim();
|
||||||
|
if (sLine.indexOf(HEADER_TYPE) >= 0) {
|
||||||
|
// at this point, we only have one type of script
|
||||||
|
} else if (sLine.indexOf(HEADER_COUNT) >= 0) {
|
||||||
|
try {
|
||||||
|
mEventCountInScript = Integer.parseInt(sLine.substring(
|
||||||
|
HEADER_COUNT.length() + 1).trim());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
}
|
||||||
|
} else if (sLine.indexOf(HEADER_SPEED) >= 0) {
|
||||||
|
try {
|
||||||
|
mSpeed = Double.parseDouble(sLine.substring(
|
||||||
|
HEADER_SPEED.length() + 1).trim());
|
||||||
|
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
}
|
||||||
|
} else if (sLine.indexOf(STARTING_DATA_LINE) >= 0) {
|
||||||
|
// header ends until we read the start data mark
|
||||||
|
mFileOpened = true;
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("read script header success");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("Error in reading script header");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processLine(String s) {
|
||||||
|
int index1 = s.indexOf('(');
|
||||||
|
int index2 = s.indexOf(')');
|
||||||
|
|
||||||
|
if (index1 < 0 || index2 < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringTokenizer st = new StringTokenizer(
|
||||||
|
s.substring(index1 + 1, index2), ",");
|
||||||
|
|
||||||
|
if (s.indexOf(EVENT_KEYWORD_KEY) >= 0) {
|
||||||
|
// key events
|
||||||
|
try {
|
||||||
|
long downTime = Long.parseLong(st.nextToken());
|
||||||
|
long eventTime = Long.parseLong(st.nextToken());
|
||||||
|
int action = Integer.parseInt(st.nextToken());
|
||||||
|
int code = Integer.parseInt(st.nextToken());
|
||||||
|
int repeat = Integer.parseInt(st.nextToken());
|
||||||
|
int metaState = Integer.parseInt(st.nextToken());
|
||||||
|
int device = Integer.parseInt(st.nextToken());
|
||||||
|
int scancode = Integer.parseInt(st.nextToken());
|
||||||
|
|
||||||
|
MonkeyKeyEvent e = new MonkeyKeyEvent(downTime, eventTime,
|
||||||
|
action, code, repeat, metaState, device, scancode);
|
||||||
|
mQ.addLast(e);
|
||||||
|
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// something wrong with this line in the script
|
||||||
|
}
|
||||||
|
} else if (s.indexOf(EVENT_KEYWORD_POINTER) >= 0 ||
|
||||||
|
s.indexOf(EVENT_KEYWORD_TRACKBALL) >= 0) {
|
||||||
|
// trackball/pointer event
|
||||||
|
try {
|
||||||
|
long downTime = Long.parseLong(st.nextToken());
|
||||||
|
long eventTime = Long.parseLong(st.nextToken());
|
||||||
|
int action = Integer.parseInt(st.nextToken());
|
||||||
|
float x = Float.parseFloat(st.nextToken());
|
||||||
|
float y = Float.parseFloat(st.nextToken());
|
||||||
|
float pressure = Float.parseFloat(st.nextToken());
|
||||||
|
float size = Float.parseFloat(st.nextToken());
|
||||||
|
int metaState = Integer.parseInt(st.nextToken());
|
||||||
|
float xPrecision = Float.parseFloat(st.nextToken());
|
||||||
|
float yPrecision = Float.parseFloat(st.nextToken());
|
||||||
|
int device = Integer.parseInt(st.nextToken());
|
||||||
|
int edgeFlags = Integer.parseInt(st.nextToken());
|
||||||
|
|
||||||
|
int type = MonkeyEvent.EVENT_TYPE_TRACKBALL;
|
||||||
|
if (s.indexOf("Pointer") > 0) {
|
||||||
|
type = MonkeyEvent.EVENT_TYPE_POINTER;
|
||||||
|
}
|
||||||
|
MonkeyMotionEvent e = new MonkeyMotionEvent(type, downTime, eventTime,
|
||||||
|
action, x, y, pressure, size, metaState, xPrecision, yPrecision,
|
||||||
|
device, edgeFlags);
|
||||||
|
mQ.addLast(e);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// we ignore this event
|
||||||
|
}
|
||||||
|
} else if (s.indexOf(EVENT_KEYWORD_FLIP) >= 0) {
|
||||||
|
boolean keyboardOpen = Boolean.parseBoolean(st.nextToken());
|
||||||
|
MonkeyFlipEvent e = new MonkeyFlipEvent(keyboardOpen);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeFile() {
|
||||||
|
mFileOpened = false;
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("closing script file");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
mFStream.close();
|
||||||
|
mInputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add home key press/release event to the queue
|
||||||
|
*/
|
||||||
|
private void addHomeKeyEvent() {
|
||||||
|
MonkeyKeyEvent e = new MonkeyKeyEvent(KeyEvent.ACTION_DOWN,
|
||||||
|
KeyEvent.KEYCODE_HOME);
|
||||||
|
mQ.addLast(e);
|
||||||
|
e = new MonkeyKeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HOME);
|
||||||
|
mQ.addLast(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* read next batch of events from the provided script file
|
||||||
|
* @return true if success
|
||||||
|
*/
|
||||||
|
private boolean readNextBatch() {
|
||||||
|
String sLine = null;
|
||||||
|
int readCount = 0;
|
||||||
|
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("readNextBatch(): reading next batch of events");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mFileOpened) {
|
||||||
|
if (!readScriptHeader()) {
|
||||||
|
closeFile();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
resetValue();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In order to allow the Monkey to replay captured events multiple times
|
||||||
|
* we need to define a default start UI, which is the home screen
|
||||||
|
* Otherwise, it won't be accurate since the captured events
|
||||||
|
* could end anywhere
|
||||||
|
*/
|
||||||
|
addHomeKeyEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (readCount++ < MAX_ONE_TIME_READS &&
|
||||||
|
(sLine = mBufferReader.readLine()) != null) {
|
||||||
|
sLine = sLine.trim();
|
||||||
|
processLine(sLine);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sLine == null) {
|
||||||
|
// to the end of the file
|
||||||
|
if (THIS_DEBUG) {
|
||||||
|
System.out.println("readNextBatch(): to the end of file");
|
||||||
|
}
|
||||||
|
closeFile();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sleep for a period of given time, introducing latency among events
|
||||||
|
* @param time to sleep in millisecond
|
||||||
|
*/
|
||||||
|
private void needSleep(long time) {
|
||||||
|
if (time < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Thread.sleep(time);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check whether we can successfully read the header of the script file
|
||||||
|
*/
|
||||||
|
public boolean validate() {
|
||||||
|
boolean b = readNextBatch();
|
||||||
|
if (mVerbose > 0) {
|
||||||
|
System.out.println("Replaying " + mEventCountInScript +
|
||||||
|
" events with speed " + mSpeed);
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVerbose(int verbose) {
|
||||||
|
mVerbose = verbose;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adjust key downtime and eventtime according to both
|
||||||
|
* recorded values and current system time
|
||||||
|
* @param e KeyEvent
|
||||||
|
*/
|
||||||
|
private void adjustKeyEventTime(MonkeyKeyEvent e) {
|
||||||
|
if (e.getEventTime() < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
long thisDownTime = 0;
|
||||||
|
long thisEventTime = 0;
|
||||||
|
long expectedDelay = 0;
|
||||||
|
|
||||||
|
if (mLastRecordedEventTime <= 0) {
|
||||||
|
// first time event
|
||||||
|
thisDownTime = SystemClock.uptimeMillis();
|
||||||
|
thisEventTime = thisDownTime;
|
||||||
|
} else {
|
||||||
|
if (e.getDownTime() != mLastRecordedDownTimeKey) {
|
||||||
|
thisDownTime = e.getDownTime();
|
||||||
|
} else {
|
||||||
|
thisDownTime = mLastExportDownTimeKey;
|
||||||
|
}
|
||||||
|
expectedDelay = (long) ((e.getEventTime() -
|
||||||
|
mLastRecordedEventTime) * mSpeed);
|
||||||
|
thisEventTime = mLastExportEventTime + expectedDelay;
|
||||||
|
// add sleep to simulate everything in recording
|
||||||
|
needSleep(expectedDelay - SLEEP_COMPENSATE_DIFF);
|
||||||
|
}
|
||||||
|
mLastRecordedDownTimeKey = e.getDownTime();
|
||||||
|
mLastRecordedEventTime = e.getEventTime();
|
||||||
|
e.setDownTime(thisDownTime);
|
||||||
|
e.setEventTime(thisEventTime);
|
||||||
|
mLastExportDownTimeKey = thisDownTime;
|
||||||
|
mLastExportEventTime = thisEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adjust motion downtime and eventtime according to both
|
||||||
|
* recorded values and current system time
|
||||||
|
* @param e KeyEvent
|
||||||
|
*/
|
||||||
|
private void adjustMotionEventTime(MonkeyMotionEvent e) {
|
||||||
|
if (e.getEventTime() < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
long thisDownTime = 0;
|
||||||
|
long thisEventTime = 0;
|
||||||
|
long expectedDelay = 0;
|
||||||
|
|
||||||
|
if (mLastRecordedEventTime <= 0) {
|
||||||
|
// first time event
|
||||||
|
thisDownTime = SystemClock.uptimeMillis();
|
||||||
|
thisEventTime = thisDownTime;
|
||||||
|
} else {
|
||||||
|
if (e.getDownTime() != mLastRecordedDownTimeMotion) {
|
||||||
|
thisDownTime = e.getDownTime();
|
||||||
|
} else {
|
||||||
|
thisDownTime = mLastExportDownTimeMotion;
|
||||||
|
}
|
||||||
|
expectedDelay = (long) ((e.getEventTime() -
|
||||||
|
mLastRecordedEventTime) * mSpeed);
|
||||||
|
thisEventTime = mLastExportEventTime + expectedDelay;
|
||||||
|
// add sleep to simulate everything in recording
|
||||||
|
needSleep(expectedDelay - SLEEP_COMPENSATE_DIFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
mLastRecordedDownTimeMotion = e.getDownTime();
|
||||||
|
mLastRecordedEventTime = e.getEventTime();
|
||||||
|
e.setDownTime(thisDownTime);
|
||||||
|
e.setEventTime(thisEventTime);
|
||||||
|
mLastExportDownTimeMotion = thisDownTime;
|
||||||
|
mLastExportEventTime = thisEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* if the queue is empty, we generate events first
|
||||||
|
* @return the first event in the queue, if null, indicating the system crashes
|
||||||
|
*/
|
||||||
|
public MonkeyEvent getNextEvent() {
|
||||||
|
long recordedEventTime = -1;
|
||||||
|
|
||||||
|
if (mQ.isEmpty()) {
|
||||||
|
readNextBatch();
|
||||||
|
}
|
||||||
|
MonkeyEvent e = mQ.getFirst();
|
||||||
|
mQ.removeFirst();
|
||||||
|
|
||||||
|
if (e.getEventType() == MonkeyEvent.EVENT_TYPE_KEY) {
|
||||||
|
adjustKeyEventTime((MonkeyKeyEvent) e);
|
||||||
|
} else if (e.getEventType() == MonkeyEvent.EVENT_TYPE_POINTER ||
|
||||||
|
e.getEventType() == MonkeyEvent.EVENT_TYPE_TRACKBALL) {
|
||||||
|
adjustMotionEventTime((MonkeyMotionEvent) e);
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -151,7 +151,7 @@ xalloc0( size_t sz )
|
|||||||
|
|
||||||
#define xnew0(p) (p) = xalloc0(sizeof(*(p)))
|
#define xnew0(p) (p) = xalloc0(sizeof(*(p)))
|
||||||
|
|
||||||
#define xfree(p) ({ free((p)), (p) = NULL; })
|
#define xfree(p) (free((p)), (p) = NULL)
|
||||||
|
|
||||||
static void*
|
static void*
|
||||||
xrealloc( void* block, size_t size )
|
xrealloc( void* block, size_t size )
|
||||||
@@ -622,13 +622,6 @@ fdhandler_event( FDHandler* f, int events )
|
|||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (events & (EPOLLHUP|EPOLLERR)) {
|
|
||||||
/* disconnection */
|
|
||||||
D("%s: disconnect on fd %d", __FUNCTION__, f->fd);
|
|
||||||
receiver_close( f->receiver );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (events & EPOLLIN) {
|
if (events & EPOLLIN) {
|
||||||
Packet* p = packet_alloc();
|
Packet* p = packet_alloc();
|
||||||
int len;
|
int len;
|
||||||
@@ -643,6 +636,19 @@ fdhandler_event( FDHandler* f, int events )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* in certain cases, it's possible to have both EPOLLIN and
|
||||||
|
* EPOLLHUP at the same time. This indicates that there is incoming
|
||||||
|
* data to read, but that the connection was nonetheless closed
|
||||||
|
* by the sender. Be sure to read the data before closing
|
||||||
|
* the receiver to avoid packet loss.
|
||||||
|
*/
|
||||||
|
if (events & (EPOLLHUP|EPOLLERR)) {
|
||||||
|
/* disconnection */
|
||||||
|
D("%s: disconnect on fd %d", __FUNCTION__, f->fd);
|
||||||
|
receiver_close( f->receiver );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (events & EPOLLOUT && f->out_first) {
|
if (events & EPOLLOUT && f->out_first) {
|
||||||
Packet* p = f->out_first;
|
Packet* p = f->out_first;
|
||||||
int avail, len;
|
int avail, len;
|
||||||
@@ -687,13 +693,6 @@ fdhandler_init( FDHandler* f,
|
|||||||
static void
|
static void
|
||||||
fdhandler_accept_event( FDHandler* f, int events )
|
fdhandler_accept_event( FDHandler* f, int events )
|
||||||
{
|
{
|
||||||
if (events & (EPOLLHUP|EPOLLERR)) {
|
|
||||||
/* disconnecting !! */
|
|
||||||
D("%s: closing fd %d", __FUNCTION__, f->fd);
|
|
||||||
receiver_close( f->receiver );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (events & EPOLLIN) {
|
if (events & EPOLLIN) {
|
||||||
/* this is an accept - send a dummy packet to the receiver */
|
/* this is an accept - send a dummy packet to the receiver */
|
||||||
Packet* p = packet_alloc();
|
Packet* p = packet_alloc();
|
||||||
@@ -703,6 +702,13 @@ fdhandler_accept_event( FDHandler* f, int events )
|
|||||||
p->len = 1;
|
p->len = 1;
|
||||||
receiver_post( f->receiver, p );
|
receiver_post( f->receiver, p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (events & (EPOLLHUP|EPOLLERR)) {
|
||||||
|
/* disconnecting !! */
|
||||||
|
D("%s: closing fd %d", __FUNCTION__, f->fd);
|
||||||
|
receiver_close( f->receiver );
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1243,8 +1249,9 @@ static Multiplexer _multiplexer[1];
|
|||||||
#define QEMUD_PREFIX "qemud_"
|
#define QEMUD_PREFIX "qemud_"
|
||||||
|
|
||||||
static const struct { const char* name; ChannelType ctype; } default_channels[] = {
|
static const struct { const char* name; ChannelType ctype; } default_channels[] = {
|
||||||
{ "gsm", CHANNEL_DUPLEX }, /* GSM AT command channel, used by commands/rild/rild.c */
|
{ "gsm", CHANNEL_DUPLEX }, /* GSM AT command channel, used by commands/rild/rild.c */
|
||||||
{ "gps", CHANNEL_BROADCAST }, /* GPS NMEA commands, used by libs/hardware/qemu_gps.c */
|
{ "gps", CHANNEL_BROADCAST }, /* GPS NMEA commands, used by libs/hardware/qemu_gps.c */
|
||||||
|
{ "control", CHANNEL_DUPLEX }, /* Used for power/leds/vibrator/etc... */
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,56 +1,70 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="java/android"/>
|
<classpathentry kind="src" path="packages/apps/AlarmClock/src"/>
|
||||||
<classpathentry excluding="android/com/google/tests/|ext/" kind="src" path="java/tests"/>
|
<classpathentry kind="src" path="packages/apps/Browser/src"/>
|
||||||
<classpathentry kind="lib" path="apps/Calculator/arity-1.3.1.jar"/>
|
<classpathentry kind="src" path="packages/apps/Calendar/src"/>
|
||||||
<classpathentry kind="lib" path="java/ext/googleclient-lib.jar"/>
|
<classpathentry kind="src" path="packages/apps/Calculator/src"/>
|
||||||
<classpathentry kind="lib" path="java/maps/maps-lib.jar"/>
|
<classpathentry kind="src" path="packages/apps/Camera/src"/>
|
||||||
<classpathentry kind="lib" path="partner/google/apps/Maps/libprotobuffer.jar"/>
|
<classpathentry kind="src" path="packages/apps/Contacts/src"/>
|
||||||
<classpathentry kind="src" path="apps/AlarmClock/src"/>
|
<classpathentry kind="src" path="packages/apps/Email/src"/>
|
||||||
<classpathentry kind="src" path="apps/Anagrams/src"/>
|
<classpathentry kind="src" path="packages/apps/GoogleSearch/src"/>
|
||||||
<classpathentry kind="src" path="apps/AndroidTests/DisabledTestApp/src"/>
|
<classpathentry kind="src" path="packages/apps/HTMLViewer/src"/>
|
||||||
<classpathentry kind="src" path="apps/AndroidTests/EnabledTestApp/src"/>
|
<classpathentry kind="src" path="packages/apps/IM/src"/>
|
||||||
<classpathentry kind="src" path="apps/AndroidTests/src"/>
|
<classpathentry kind="src" path="packages/apps/IM/plugin"/>
|
||||||
<classpathentry kind="src" path="apps/Browser/src"/>
|
<classpathentry kind="src" path="packages/apps/Launcher/src"/>
|
||||||
<classpathentry kind="src" path="apps/Calculator/src"/>
|
<classpathentry kind="src" path="packages/apps/Music/src"/>
|
||||||
<classpathentry kind="src" path="apps/OldCalculator/src"/>
|
<classpathentry kind="src" path="packages/apps/Mms/src"/>
|
||||||
<classpathentry kind="src" path="apps/Calendar/src"/>
|
<classpathentry kind="src" path="packages/apps/PackageInstaller/src"/>
|
||||||
<classpathentry kind="src" path="apps/Camera/src"/>
|
<classpathentry kind="src" path="packages/apps/Phone/src"/>
|
||||||
<classpathentry kind="src" path="apps/Contacts/src"/>
|
<classpathentry kind="src" path="packages/apps/Settings/src"/>
|
||||||
<classpathentry kind="src" path="apps/Fallback/src"/>
|
<classpathentry kind="src" path="packages/apps/SoundRecorder/src"/>
|
||||||
<classpathentry kind="src" path="apps/FontLab/src"/>
|
<classpathentry kind="src" path="packages/apps/Stk/src"/>
|
||||||
<classpathentry kind="src" path="apps/IM/src"/>
|
<classpathentry kind="src" path="packages/apps/Sync/src"/>
|
||||||
<classpathentry kind="src" path="apps/Mms/src"/>
|
<classpathentry kind="src" path="packages/apps/Updater/src"/>
|
||||||
<classpathentry kind="src" path="apps/Music/src"/>
|
<classpathentry kind="src" path="packages/apps/VoiceDialer/src"/>
|
||||||
<classpathentry kind="src" path="apps/PackageInstaller/src"/>
|
<classpathentry kind="src" path="packages/providers/CalendarProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/Phone/src"/>
|
<classpathentry kind="src" path="packages/providers/ContactsProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/Quake/src"/>
|
<classpathentry kind="src" path="packages/providers/DownloadProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/Settings/src"/>
|
<classpathentry kind="src" path="packages/providers/DrmProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/SoundRecorder/src"/>
|
<classpathentry kind="src" path="packages/providers/ImProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/StkTest/src"/>
|
<classpathentry kind="src" path="packages/providers/MediaProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/Sync/src"/>
|
<classpathentry kind="src" path="packages/providers/TelephonyProvider/src"/>
|
||||||
<classpathentry kind="src" path="apps/Term/src"/>
|
<classpathentry kind="src" path="vendor/google/apps/Street/src"/>
|
||||||
<classpathentry kind="src" path="apps/TestHarness/src"/>
|
<classpathentry kind="src" path="vendor/google/apps/YouTube/src"/>
|
||||||
<classpathentry kind="src" path="apps/ToDoList/src"/>
|
<classpathentry kind="src" path="frameworks/base/awt"/>
|
||||||
<classpathentry kind="src" path="apps/Updater/src"/>
|
<classpathentry kind="src" path="frameworks/base/cmds/am/src"/>
|
||||||
<classpathentry kind="src" path="apps/VoiceDialer/src"/>
|
<classpathentry kind="src" path="frameworks/base/cmds/input/src"/>
|
||||||
<classpathentry kind="src" path="apps/WapBrowser/src"/>
|
<classpathentry kind="src" path="frameworks/base/cmds/pm/src"/>
|
||||||
<classpathentry kind="src" path="apps/WhackAMole/src"/>
|
<classpathentry kind="src" path="frameworks/base/cmds/svc/src"/>
|
||||||
<classpathentry kind="src" path="commands/am/src"/>
|
<classpathentry kind="src" path="frameworks/base/core/java"/>
|
||||||
<classpathentry kind="src" path="commands/input/src"/>
|
<classpathentry kind="src" path="frameworks/base/graphics/java"/>
|
||||||
<classpathentry kind="src" path="commands/monkey/src"/>
|
<classpathentry kind="src" path="frameworks/base/im/java"/>
|
||||||
<classpathentry kind="src" path="commands/pm/src"/>
|
<classpathentry kind="src" path="frameworks/base/location/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/calendar/src"/>
|
<classpathentry kind="src" path="frameworks/base/media/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/contacts/src"/>
|
<classpathentry kind="src" path="frameworks/base/opengl/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/downloads/src"/>
|
<classpathentry kind="src" path="frameworks/base/packages/SettingsProvider/src"/>
|
||||||
<classpathentry kind="src" path="content/providers/drm/src"/>
|
<classpathentry kind="src" path="frameworks/base/packages/SubscribedFeedsProvider/src"/>
|
||||||
<classpathentry kind="src" path="content/providers/im/src"/>
|
<classpathentry kind="src" path="frameworks/base/sax/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/media/src"/>
|
<classpathentry kind="src" path="frameworks/base/services/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/settings/src"/>
|
<classpathentry kind="src" path="frameworks/base/telephony/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/subscribedfeeds/src"/>
|
<classpathentry kind="src" path="frameworks/base/test-runner"/>
|
||||||
<classpathentry kind="src" path="content/providers/sync/src"/>
|
<classpathentry kind="src" path="frameworks/base/wifi/java"/>
|
||||||
<classpathentry kind="src" path="content/providers/telephony/src"/>
|
<classpathentry kind="src" path="frameworks/policies/base/phone"/>
|
||||||
<classpathentry kind="src" path="content/tests/providers/contacts/src"/>
|
<classpathentry kind="src" path="development/samples/ApiDemos/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/ApiDemos/tests/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/Compass/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/HelloActivity/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/HelloActivity/tests/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/Home/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/LunarLander/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/LunarLander/tests/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/NotePad/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/NotePad/tests/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/RSSReader/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/SkeletonApp/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/SkeletonApp/tests/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/Snake/src"/>
|
||||||
|
<classpathentry kind="src" path="development/samples/Snake/tests/src"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/annotation/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/annotation/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/archive/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/archive/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/auth/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/auth/src/main/java"/>
|
||||||
@@ -59,77 +73,44 @@
|
|||||||
<classpathentry kind="src" path="dalvik/libcore/crypto/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/crypto/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/dalvik/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/dalvik/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/icu/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/icu/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/instrument/src/main/java"/>
|
|
||||||
<classpathentry kind="src" path="dalvik/libcore/json/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/json/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/junit/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/junit/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/logging/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/logging/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/luni-kernel/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/luni-kernel/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/luni/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/luni/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/math/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/math/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/nio/src/main/java"/>
|
|
||||||
<classpathentry kind="src" path="dalvik/libcore/nio_char/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/nio_char/src/main/java"/>
|
||||||
|
<classpathentry kind="src" path="dalvik/libcore/nio/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/openssl/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/openssl/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/prefs/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/prefs/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/regex/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/regex/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/security-kernel/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/security-kernel/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/security/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/security/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/sound/src/main/java"/>
|
|
||||||
<classpathentry kind="src" path="dalvik/libcore/sql/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/sql/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/suncompat/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/suncompat/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/text/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/text/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/x-net/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/x-net/src/main/java"/>
|
||||||
<classpathentry kind="src" path="dalvik/libcore/xml/src/main/java"/>
|
<classpathentry kind="src" path="dalvik/libcore/xml/src/main/java"/>
|
||||||
<classpathentry kind="src" path="java/config/release"/>
|
|
||||||
<classpathentry kind="src" path="java/ext"/>
|
|
||||||
<classpathentry kind="src" path="java/gtalkservice"/>
|
|
||||||
<classpathentry kind="src" path="java/maps"/>
|
|
||||||
<classpathentry kind="src" path="java/policy/phone"/>
|
|
||||||
<classpathentry kind="src" path="java/services"/>
|
|
||||||
<classpathentry kind="src" path="java/tests/ext"/>
|
|
||||||
<classpathentry kind="src" path="java/test-runner"/>
|
|
||||||
<classpathentry kind="src" path="out/target/common/R"/>
|
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/AndroidTests_intermediates/src/src"/>
|
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/ApiDemos_intermediates/src/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/APPS/ApiDemos_intermediates/src/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/Browser_intermediates/src/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/APPS/Browser_intermediates/src/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/Development_intermediates/src/src"/>
|
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/IM_intermediates/src/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/APPS/IM_intermediates/src/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/Music_intermediates/src/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/APPS/Music_intermediates/src/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/APPS/Phone_intermediates/src/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/APPS/Phone_intermediates/src/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/com.android.im.plugin_intermediates/src"/>
|
||||||
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/com.google.android.gtalkservice_intermediates/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Cocktail/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/im/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/GTalkService/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/location/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Gadgets/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/media/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Gmail/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/telephony/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/GoogleApps/src"/>
|
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/wifi/java"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Home/src"/>
|
<classpathentry kind="src" path="out/target/common/R"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Maps/src"/>
|
<classpathentry kind="src" path="external/tagsoup/src"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/SetupWizard/src"/>
|
<classpathentry kind="src" path="external/protobuf/src"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Street/src"/>
|
<classpathentry kind="src" path="external/gdata/src"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Talk/src"/>
|
<classpathentry kind="src" path="external/apache-http/src"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/Vending/src"/>
|
<classpathentry kind="lib" path="external/googleclient/googleclient-lib.jar"/>
|
||||||
<classpathentry kind="src" path="partner/google/apps/YouTube/src"/>
|
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-framework_intermediates/javalib.jar"/>
|
||||||
<classpathentry kind="src" path="partner/google/providers/gmail/src"/>
|
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/googlelogin-client_intermediates/javalib.jar"/>
|
||||||
<classpathentry kind="src" path="partner/google/tests/GmailProvider/src"/>
|
<classpathentry kind="lib" path="packages/apps/Calculator/arity-1.3.1.jar"/>
|
||||||
<classpathentry kind="src" path="partner/google/tests/GoogleApps/src"/>
|
<classpathentry kind="output" path="out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes"/>
|
||||||
<classpathentry kind="src" path="partner/google/tests/Maps/src"/>
|
|
||||||
<classpathentry kind="src" path="partner/google/tests/WeiTest/src"/>
|
|
||||||
<classpathentry kind="src" path="partner/tmobile/apps/MyFaves/src"/>
|
|
||||||
<classpathentry kind="src" path="partner/tmobile/tests/CarrierDiagnostics/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/ApiDemos/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/HelloActivity/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/ImageCaption/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/LunarLander/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/NotePad/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/RSSReader/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/SkeletonApp/src"/>
|
|
||||||
<classpathentry kind="src" path="samples/Snake/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/Dashboard/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/DataSets/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/Development/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/DumpRenderTree/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/FrameworkTests/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/FrameworkTests/tests/src"/>
|
|
||||||
<classpathentry kind="src" path="tests/framework-tests/src"/>
|
|
||||||
<classpathentry kind="output" path="out/eclipse"/>
|
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|||||||
@@ -7,23 +7,38 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
0007A8F30DB4DFF30068AF40 /* SampleXfermodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0007A8F20DB4DFF30068AF40 /* SampleXfermodes.cpp */; };
|
||||||
0008AEE10DABF08F00477EFB /* libgiflib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0008AEDE0DABF01400477EFB /* libgiflib.a */; };
|
0008AEE10DABF08F00477EFB /* libgiflib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0008AEDE0DABF01400477EFB /* libgiflib.a */; };
|
||||||
000A1CB00DA522ED003DAC04 /* SamplePolyToPoly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */; };
|
000A1CB00DA522ED003DAC04 /* SamplePolyToPoly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */; };
|
||||||
000DC0C60D63796E00854F5A /* SampleTextAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */; };
|
000DC0C60D63796E00854F5A /* SampleTextAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */; };
|
||||||
|
001142AB0DCA20650070D0A3 /* SamplePicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001142AA0DCA20650070D0A3 /* SamplePicture.cpp */; };
|
||||||
0017F1490D6A0A6A008D9B31 /* SampleEmboss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */; };
|
0017F1490D6A0A6A008D9B31 /* SampleEmboss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */; };
|
||||||
0017F14A0D6A0A6A008D9B31 /* SampleLines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */; };
|
0017F14A0D6A0A6A008D9B31 /* SampleLines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */; };
|
||||||
0017F14B0D6A0A6A008D9B31 /* SamplePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0017F1480D6A0A6A008D9B31 /* SamplePatch.cpp */; };
|
|
||||||
0017F2CF0D6F3933008D9B31 /* libgraphics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C440D3E999300651393 /* libgraphics.a */; };
|
0017F2CF0D6F3933008D9B31 /* libgraphics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C440D3E999300651393 /* libgraphics.a */; };
|
||||||
0017F2D00D6F393F008D9B31 /* libcorecg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C2C0D3E999300651393 /* libcorecg.a */; };
|
0017F2D00D6F393F008D9B31 /* libcorecg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C2C0D3E999300651393 /* libcorecg.a */; };
|
||||||
0017F2D60D6F3949008D9B31 /* libviews.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C5E0D3E999300651393 /* libviews.a */; };
|
0017F2D60D6F3949008D9B31 /* libviews.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C5E0D3E999300651393 /* libviews.a */; };
|
||||||
|
0019628A0EACB9D300447A07 /* SamplePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001962890EACB9D300447A07 /* SamplePatch.cpp */; };
|
||||||
|
001962900EACBA2A00447A07 /* SamplePageFlip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0019628F0EACBA2A00447A07 /* SamplePageFlip.cpp */; };
|
||||||
|
002919440DEBA08100AF67D5 /* SkBitmapFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002919430DEBA08100AF67D5 /* SkBitmapFilter.cpp */; };
|
||||||
|
002919510DEC39C700AF67D5 /* SkConvolutionBitmapFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002919500DEC39C700AF67D5 /* SkConvolutionBitmapFilter.cpp */; };
|
||||||
|
00298C2A0E7085E7005E85ED /* SampleStrokeText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00298C290E7085E7005E85ED /* SampleStrokeText.cpp */; };
|
||||||
003474ED0D5B61BA00F3F389 /* SampleVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */; };
|
003474ED0D5B61BA00F3F389 /* SampleVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */; };
|
||||||
|
003476840DF8DEC400A270A4 /* SampleCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003476830DF8DEC400A270A4 /* SampleCircle.cpp */; };
|
||||||
|
003A10170E0C29F800136848 /* SampleOverflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003A10160E0C29F800136848 /* SampleOverflow.cpp */; };
|
||||||
003FA70A0D58CA4D0063AD75 /* SampleMeasure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */; };
|
003FA70A0D58CA4D0063AD75 /* SampleMeasure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */; };
|
||||||
|
0061A77B0DB7A7150007094E /* SampleFillType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0061A77A0DB7A7150007094E /* SampleFillType.cpp */; };
|
||||||
|
00648B5A0DDB15B90087F2E8 /* SampleTypeface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00648B590DDB15B90087F2E8 /* SampleTypeface.cpp */; };
|
||||||
00685FCE0D8A16C300CD71AA /* SampleAll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C650D3E99A800651393 /* SampleAll.cpp */; };
|
00685FCE0D8A16C300CD71AA /* SampleAll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C650D3E99A800651393 /* SampleAll.cpp */; };
|
||||||
006860100D8A1C8B00CD71AA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0068600F0D8A1C8A00CD71AA /* OpenGL.framework */; };
|
006860100D8A1C8B00CD71AA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0068600F0D8A1C8A00CD71AA /* OpenGL.framework */; };
|
||||||
006860290D8A1DFB00CD71AA /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 006860280D8A1DFB00CD71AA /* AGL.framework */; };
|
006860290D8A1DFB00CD71AA /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 006860280D8A1DFB00CD71AA /* AGL.framework */; };
|
||||||
0071BCEF0D746BDF00F667CE /* SampleFilter2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */; };
|
0071BCEF0D746BDF00F667CE /* SampleFilter2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */; };
|
||||||
007ECA770DA684A90086775A /* libpvjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 007ECA760DA684A20086775A /* libpvjpeg.a */; };
|
|
||||||
009A74250DA11C5D00876C03 /* libGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 009A740E0DA11B1F00876C03 /* libGL.a */; };
|
009A74250DA11C5D00876C03 /* libGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 009A740E0DA11B1F00876C03 /* libGL.a */; };
|
||||||
|
00B8EBFC0EB64ABC003C2F6F /* SampleDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B8EBFB0EB64ABC003C2F6F /* SampleDrawLooper.cpp */; };
|
||||||
|
00C5D1E10EBFFE4D00C6702C /* test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C5D1E00EBFFE4D00C6702C /* test.cpp */; };
|
||||||
|
00C5D1E50EC0007400C6702C /* test_drawcolor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C5D1E40EC0007400C6702C /* test_drawcolor.cpp */; };
|
||||||
|
00C5D2010EC00F0300C6702C /* SampleTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C5D2000EC00F0300C6702C /* SampleTests.cpp */; };
|
||||||
|
00C5D20E0EC0106F00C6702C /* test_drawrect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C5D1F00EC0044600C6702C /* test_drawrect.cpp */; };
|
||||||
|
00D12E4D0DAD3D0A003918C5 /* libanimator.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0013C7920D94043200B41703 /* libanimator.a */; };
|
||||||
00D315710D5A5B1D004B2209 /* SampleBitmapRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00D315700D5A5B1D004B2209 /* SampleBitmapRect.cpp */; };
|
00D315710D5A5B1D004B2209 /* SampleBitmapRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00D315700D5A5B1D004B2209 /* SampleBitmapRect.cpp */; };
|
||||||
00ED8C7C0D3E99A800651393 /* SampleApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C660D3E99A800651393 /* SampleApp.cpp */; };
|
00ED8C7C0D3E99A800651393 /* SampleApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C660D3E99A800651393 /* SampleApp.cpp */; };
|
||||||
00ED8C7D0D3E99A800651393 /* SampleArc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C670D3E99A800651393 /* SampleArc.cpp */; };
|
00ED8C7D0D3E99A800651393 /* SampleArc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00ED8C670D3E99A800651393 /* SampleArc.cpp */; };
|
||||||
@@ -52,6 +67,7 @@
|
|||||||
00ED8CDD0D3E9FE700651393 /* libports-mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C520D3E999300651393 /* libports-mac.a */; };
|
00ED8CDD0D3E9FE700651393 /* libports-mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C520D3E999300651393 /* libports-mac.a */; };
|
||||||
00ED8CDE0D3E9FEA00651393 /* libports.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C580D3E999300651393 /* libports.a */; };
|
00ED8CDE0D3E9FEA00651393 /* libports.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C580D3E999300651393 /* libports.a */; };
|
||||||
00ED8CE00D3E9FEF00651393 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C620D3E999300651393 /* libzlib.a */; };
|
00ED8CE00D3E9FEF00651393 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED8C620D3E999300651393 /* libzlib.a */; };
|
||||||
|
00F9D6860E7F51680031AAA2 /* SkSetPoly3To3_A.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F9D6850E7F51670031AAA2 /* SkSetPoly3To3_A.cpp */; };
|
||||||
8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
|
8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
|
||||||
8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
|
8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
|
||||||
8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
|
8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
|
||||||
@@ -62,14 +78,14 @@
|
|||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 0008AED90DABF01300477EFB /* giflib.xcodeproj */;
|
containerPortal = 0008AED90DABF01300477EFB /* giflib.xcodeproj */;
|
||||||
proxyType = 2;
|
proxyType = 2;
|
||||||
remoteGlobalIDString = D2AAC046055464E500DB518D /* libgiflib.a */;
|
remoteGlobalIDString = D2AAC046055464E500DB518D;
|
||||||
remoteInfo = giflib;
|
remoteInfo = giflib;
|
||||||
};
|
};
|
||||||
0008AF0F0DABF9BD00477EFB /* PBXContainerItemProxy */ = {
|
0008AF0F0DABF9BD00477EFB /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 0008AED90DABF01300477EFB /* giflib.xcodeproj */;
|
containerPortal = 0008AED90DABF01300477EFB /* giflib.xcodeproj */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = D2AAC045055464E500DB518D /* giflib */;
|
remoteGlobalIDString = D2AAC045055464E500DB518D;
|
||||||
remoteInfo = giflib;
|
remoteInfo = giflib;
|
||||||
};
|
};
|
||||||
0013C7910D94043200B41703 /* PBXContainerItemProxy */ = {
|
0013C7910D94043200B41703 /* PBXContainerItemProxy */ = {
|
||||||
@@ -86,20 +102,6 @@
|
|||||||
remoteGlobalIDString = D2AAC045055464E500DB518D;
|
remoteGlobalIDString = D2AAC045055464E500DB518D;
|
||||||
remoteInfo = animator;
|
remoteInfo = animator;
|
||||||
};
|
};
|
||||||
007ECA750DA684A20086775A /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = 007ECA710DA684A20086775A /* pvjpeg.xcodeproj */;
|
|
||||||
proxyType = 2;
|
|
||||||
remoteGlobalIDString = D2AAC046055464E500DB518D;
|
|
||||||
remoteInfo = pvjpeg;
|
|
||||||
};
|
|
||||||
007ECA7B0DA684CF0086775A /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = 007ECA710DA684A20086775A /* pvjpeg.xcodeproj */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = D2AAC045055464E500DB518D;
|
|
||||||
remoteInfo = pvjpeg;
|
|
||||||
};
|
|
||||||
009A740D0DA11B1F00876C03 /* PBXContainerItemProxy */ = {
|
009A740D0DA11B1F00876C03 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 009A74060DA11B1F00876C03 /* GL.xcodeproj */;
|
containerPortal = 009A74060DA11B1F00876C03 /* GL.xcodeproj */;
|
||||||
@@ -257,22 +259,42 @@
|
|||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
0007A8F20DB4DFF30068AF40 /* SampleXfermodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleXfermodes.cpp; path = ../../../tests/skia/SampleCode/SampleXfermodes.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0008AED90DABF01300477EFB /* giflib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = giflib.xcodeproj; path = ../giflib.xcodeproj; sourceTree = SOURCE_ROOT; };
|
0008AED90DABF01300477EFB /* giflib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = giflib.xcodeproj; path = ../giflib.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePolyToPoly.cpp; path = ../../../tests/skia/SampleCode/SamplePolyToPoly.cpp; sourceTree = SOURCE_ROOT; };
|
000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePolyToPoly.cpp; path = ../../../tests/skia/SampleCode/SamplePolyToPoly.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextAlpha.cpp; path = ../../../tests/skia/SampleCode/SampleTextAlpha.cpp; sourceTree = SOURCE_ROOT; };
|
000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextAlpha.cpp; path = ../../../tests/skia/SampleCode/SampleTextAlpha.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
001142AA0DCA20650070D0A3 /* SamplePicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePicture.cpp; path = ../../../tests/skia/SampleCode/SamplePicture.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0013C78A0D94043200B41703 /* animator.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = animator.xcodeproj; path = ../animator.xcodeproj; sourceTree = SOURCE_ROOT; };
|
0013C78A0D94043200B41703 /* animator.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = animator.xcodeproj; path = ../animator.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleEmboss.cpp; path = ../../../tests/skia/SampleCode/SampleEmboss.cpp; sourceTree = SOURCE_ROOT; };
|
0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleEmboss.cpp; path = ../../../tests/skia/SampleCode/SampleEmboss.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleLines.cpp; path = ../../../tests/skia/SampleCode/SampleLines.cpp; sourceTree = SOURCE_ROOT; };
|
0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleLines.cpp; path = ../../../tests/skia/SampleCode/SampleLines.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0017F1480D6A0A6A008D9B31 /* SamplePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePatch.cpp; path = ../../../tests/skia/SampleCode/SamplePatch.cpp; sourceTree = SOURCE_ROOT; };
|
|
||||||
0017F1510D6A0A8A008D9B31 /* SkGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGeometry.h; path = ../../../libs/graphics/sgl/SkGeometry.h; sourceTree = SOURCE_ROOT; };
|
0017F1510D6A0A8A008D9B31 /* SkGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGeometry.h; path = ../../../libs/graphics/sgl/SkGeometry.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
001962890EACB9D300447A07 /* SamplePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePatch.cpp; path = ../../../tests/skia/SampleCode/SamplePatch.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0019628F0EACBA2A00447A07 /* SamplePageFlip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SamplePageFlip.cpp; path = ../../../tests/skia/SampleCode/SamplePageFlip.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
002919430DEBA08100AF67D5 /* SkBitmapFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkBitmapFilter.cpp; path = ../../../libs/graphics/sgl/SkBitmapFilter.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
002919500DEC39C700AF67D5 /* SkConvolutionBitmapFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkConvolutionBitmapFilter.cpp; path = ../../../libs/graphics/effects/SkConvolutionBitmapFilter.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00298C290E7085E7005E85ED /* SampleStrokeText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleStrokeText.cpp; path = ../../../tests/skia/SampleCode/SampleStrokeText.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleVertices.cpp; path = ../../../tests/skia/SampleCode/SampleVertices.cpp; sourceTree = SOURCE_ROOT; };
|
003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleVertices.cpp; path = ../../../tests/skia/SampleCode/SampleVertices.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
003476830DF8DEC400A270A4 /* SampleCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleCircle.cpp; path = ../../../tests/skia/SampleCode/SampleCircle.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
003A10160E0C29F800136848 /* SampleOverflow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleOverflow.cpp; path = ../../../tests/skia/SampleCode/SampleOverflow.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleMeasure.cpp; path = ../../../tests/skia/SampleCode/SampleMeasure.cpp; sourceTree = SOURCE_ROOT; };
|
003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleMeasure.cpp; path = ../../../tests/skia/SampleCode/SampleMeasure.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0041F4860DE1157900C74590 /* SkFontHost_FONTPATH.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFontHost_FONTPATH.cpp; path = ../../../libs/graphics/ports/SkFontHost_FONTPATH.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0041F4870DE1157900C74590 /* SkFontHost_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFontHost_none.cpp; path = ../../../libs/graphics/ports/SkFontHost_none.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0041F4880DE1157900C74590 /* SkFontHost_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFontHost_win.cpp; path = ../../../libs/graphics/ports/SkFontHost_win.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0061A77A0DB7A7150007094E /* SampleFillType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleFillType.cpp; path = ../../../tests/skia/SampleCode/SampleFillType.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00648B590DDB15B90087F2E8 /* SampleTypeface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTypeface.cpp; path = ../../../tests/skia/SampleCode/SampleTypeface.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0068600F0D8A1C8A00CD71AA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = SDKs/MacOSX10.5.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; };
|
0068600F0D8A1C8A00CD71AA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = SDKs/MacOSX10.5.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
006860280D8A1DFB00CD71AA /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = SDKs/MacOSX10.5.sdk/System/Library/Frameworks/AGL.framework; sourceTree = DEVELOPER_DIR; };
|
006860280D8A1DFB00CD71AA /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = SDKs/MacOSX10.5.sdk/System/Library/Frameworks/AGL.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleFilter2.cpp; path = ../../../tests/skia/SampleCode/SampleFilter2.cpp; sourceTree = SOURCE_ROOT; };
|
0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleFilter2.cpp; path = ../../../tests/skia/SampleCode/SampleFilter2.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
007ECA710DA684A20086775A /* pvjpeg.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = pvjpeg.xcodeproj; path = ../pvjpeg.xcodeproj; sourceTree = SOURCE_ROOT; };
|
|
||||||
009A74060DA11B1F00876C03 /* GL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GL.xcodeproj; path = ../GL.xcodeproj; sourceTree = SOURCE_ROOT; };
|
009A74060DA11B1F00876C03 /* GL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GL.xcodeproj; path = ../GL.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
|
00B8EBDF0EB63983003C2F6F /* SkLayerDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkLayerDrawLooper.cpp; path = ../../../libs/graphics/effects/SkLayerDrawLooper.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00B8EBFB0EB64ABC003C2F6F /* SampleDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleDrawLooper.cpp; path = ../../../tests/skia/SampleCode/SampleDrawLooper.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00C5D1DD0EBFFC5C00C6702C /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../../../tests/skia/test/test.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
00C5D1E00EBFFE4D00C6702C /* test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test.cpp; path = ../../../tests/skia/test/test.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00C5D1E40EC0007400C6702C /* test_drawcolor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test_drawcolor.cpp; path = ../../../tests/skia/test/test_drawcolor.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00C5D1F00EC0044600C6702C /* test_drawrect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test_drawrect.cpp; path = ../../../tests/skia/test/test_drawrect.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00C5D2000EC00F0300C6702C /* SampleTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTests.cpp; path = ../../../tests/skia/SampleCode/SampleTests.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00D315700D5A5B1D004B2209 /* SampleBitmapRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleBitmapRect.cpp; path = ../../../tests/skia/SampleCode/SampleBitmapRect.cpp; sourceTree = SOURCE_ROOT; };
|
00D315700D5A5B1D004B2209 /* SampleBitmapRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleBitmapRect.cpp; path = ../../../tests/skia/SampleCode/SampleBitmapRect.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00DB0B0D0E06CEC80061DE48 /* SampleNinePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleNinePatch.cpp; path = ../../../tests/skia/SampleCode/SampleNinePatch.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00ED8C060D3E999300651393 /* corecg.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = corecg.xcodeproj; path = ../corecg.xcodeproj; sourceTree = SOURCE_ROOT; };
|
00ED8C060D3E999300651393 /* corecg.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = corecg.xcodeproj; path = ../corecg.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
00ED8C090D3E999300651393 /* expat.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = expat.xcodeproj; path = ../expat.xcodeproj; sourceTree = SOURCE_ROOT; };
|
00ED8C090D3E999300651393 /* expat.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = expat.xcodeproj; path = ../expat.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
00ED8C0C0D3E999300651393 /* freetype2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = freetype2.xcodeproj; path = ../freetype2.xcodeproj; sourceTree = SOURCE_ROOT; };
|
00ED8C0C0D3E999300651393 /* freetype2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = freetype2.xcodeproj; path = ../freetype2.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||||
@@ -305,6 +327,9 @@
|
|||||||
00ED8C780D3E99A800651393 /* SampleTextEffects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextEffects.cpp; path = ../../../tests/skia/SampleCode/SampleTextEffects.cpp; sourceTree = SOURCE_ROOT; };
|
00ED8C780D3E99A800651393 /* SampleTextEffects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextEffects.cpp; path = ../../../tests/skia/SampleCode/SampleTextEffects.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00ED8C790D3E99A800651393 /* SampleTextOnPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextOnPath.cpp; path = ../../../tests/skia/SampleCode/SampleTextOnPath.cpp; sourceTree = SOURCE_ROOT; };
|
00ED8C790D3E99A800651393 /* SampleTextOnPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTextOnPath.cpp; path = ../../../tests/skia/SampleCode/SampleTextOnPath.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00ED8C7A0D3E99A800651393 /* SampleTiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTiling.cpp; path = ../../../tests/skia/SampleCode/SampleTiling.cpp; sourceTree = SOURCE_ROOT; };
|
00ED8C7A0D3E99A800651393 /* SampleTiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleTiling.cpp; path = ../../../tests/skia/SampleCode/SampleTiling.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00F9D6230E7EC9E60031AAA2 /* SkSetPoly3To3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkSetPoly3To3.cpp; path = ../../../libs/corecg/SkSetPoly3To3.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00F9D6540E7EEE580031AAA2 /* SkSetPoly3To3_D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkSetPoly3To3_D.cpp; path = ../../../libs/corecg/SkSetPoly3To3_D.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00F9D6850E7F51670031AAA2 /* SkSetPoly3To3_A.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkSetPoly3To3_A.cpp; path = ../../../libs/corecg/SkSetPoly3To3_A.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
|
1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
|
||||||
20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
||||||
@@ -331,8 +356,8 @@
|
|||||||
006860100D8A1C8B00CD71AA /* OpenGL.framework in Frameworks */,
|
006860100D8A1C8B00CD71AA /* OpenGL.framework in Frameworks */,
|
||||||
006860290D8A1DFB00CD71AA /* AGL.framework in Frameworks */,
|
006860290D8A1DFB00CD71AA /* AGL.framework in Frameworks */,
|
||||||
009A74250DA11C5D00876C03 /* libGL.a in Frameworks */,
|
009A74250DA11C5D00876C03 /* libGL.a in Frameworks */,
|
||||||
007ECA770DA684A90086775A /* libpvjpeg.a in Frameworks */,
|
|
||||||
0008AEE10DABF08F00477EFB /* libgiflib.a in Frameworks */,
|
0008AEE10DABF08F00477EFB /* libgiflib.a in Frameworks */,
|
||||||
|
00D12E4D0DAD3D0A003918C5 /* libanimator.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -355,12 +380,14 @@
|
|||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
007ECA720DA684A20086775A /* Products */ = {
|
0041F4850DE1154C00C74590 /* fonthosts */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
007ECA760DA684A20086775A /* libpvjpeg.a */,
|
0041F4860DE1157900C74590 /* SkFontHost_FONTPATH.cpp */,
|
||||||
|
0041F4870DE1157900C74590 /* SkFontHost_none.cpp */,
|
||||||
|
0041F4880DE1157900C74590 /* SkFontHost_win.cpp */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = fonthosts;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
009A74070DA11B1F00876C03 /* Products */ = {
|
009A74070DA11B1F00876C03 /* Products */ = {
|
||||||
@@ -371,6 +398,17 @@
|
|||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
00C5D1DB0EBFF83100C6702C /* tests */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
00C5D1E00EBFFE4D00C6702C /* test.cpp */,
|
||||||
|
00C5D1F00EC0044600C6702C /* test_drawrect.cpp */,
|
||||||
|
00C5D1E40EC0007400C6702C /* test_drawcolor.cpp */,
|
||||||
|
00C5D1DD0EBFFC5C00C6702C /* test.h */,
|
||||||
|
);
|
||||||
|
name = tests;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
00ED8C070D3E999300651393 /* Products */ = {
|
00ED8C070D3E999300651393 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -462,8 +500,15 @@
|
|||||||
20286C29FDCF999611CA2CEA /* SampleCode */ = {
|
20286C29FDCF999611CA2CEA /* SampleCode */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
00C5D1DB0EBFF83100C6702C /* tests */,
|
||||||
|
00F9D6230E7EC9E60031AAA2 /* SkSetPoly3To3.cpp */,
|
||||||
|
00B8EBDF0EB63983003C2F6F /* SkLayerDrawLooper.cpp */,
|
||||||
|
00F9D6850E7F51670031AAA2 /* SkSetPoly3To3_A.cpp */,
|
||||||
|
00F9D6540E7EEE580031AAA2 /* SkSetPoly3To3_D.cpp */,
|
||||||
|
002919500DEC39C700AF67D5 /* SkConvolutionBitmapFilter.cpp */,
|
||||||
|
002919430DEBA08100AF67D5 /* SkBitmapFilter.cpp */,
|
||||||
|
0041F4850DE1154C00C74590 /* fonthosts */,
|
||||||
0008AED90DABF01300477EFB /* giflib.xcodeproj */,
|
0008AED90DABF01300477EFB /* giflib.xcodeproj */,
|
||||||
007ECA710DA684A20086775A /* pvjpeg.xcodeproj */,
|
|
||||||
009A74060DA11B1F00876C03 /* GL.xcodeproj */,
|
009A74060DA11B1F00876C03 /* GL.xcodeproj */,
|
||||||
0013C78A0D94043200B41703 /* animator.xcodeproj */,
|
0013C78A0D94043200B41703 /* animator.xcodeproj */,
|
||||||
00ED8C060D3E999300651393 /* corecg.xcodeproj */,
|
00ED8C060D3E999300651393 /* corecg.xcodeproj */,
|
||||||
@@ -487,22 +532,29 @@
|
|||||||
20286C2AFDCF999611CA2CEA /* Sources */ = {
|
20286C2AFDCF999611CA2CEA /* Sources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
001962890EACB9D300447A07 /* SamplePatch.cpp */,
|
||||||
|
00298C290E7085E7005E85ED /* SampleStrokeText.cpp */,
|
||||||
|
001142AA0DCA20650070D0A3 /* SamplePicture.cpp */,
|
||||||
|
0007A8F20DB4DFF30068AF40 /* SampleXfermodes.cpp */,
|
||||||
000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */,
|
000A1CAF0DA522ED003DAC04 /* SamplePolyToPoly.cpp */,
|
||||||
0017F1510D6A0A8A008D9B31 /* SkGeometry.h */,
|
0017F1510D6A0A8A008D9B31 /* SkGeometry.h */,
|
||||||
0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */,
|
0017F1460D6A0A6A008D9B31 /* SampleEmboss.cpp */,
|
||||||
0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */,
|
0017F1470D6A0A6A008D9B31 /* SampleLines.cpp */,
|
||||||
0017F1480D6A0A6A008D9B31 /* SamplePatch.cpp */,
|
|
||||||
00ED8C650D3E99A800651393 /* SampleAll.cpp */,
|
00ED8C650D3E99A800651393 /* SampleAll.cpp */,
|
||||||
00ED8C660D3E99A800651393 /* SampleApp.cpp */,
|
00ED8C660D3E99A800651393 /* SampleApp.cpp */,
|
||||||
00ED8C670D3E99A800651393 /* SampleArc.cpp */,
|
00ED8C670D3E99A800651393 /* SampleArc.cpp */,
|
||||||
00ED8C680D3E99A800651393 /* SampleCamera.cpp */,
|
00ED8C680D3E99A800651393 /* SampleCamera.cpp */,
|
||||||
00ED8C690D3E99A800651393 /* SampleCode.h */,
|
00ED8C690D3E99A800651393 /* SampleCode.h */,
|
||||||
00ED8C6A0D3E99A800651393 /* SampleCull.cpp */,
|
00ED8C6A0D3E99A800651393 /* SampleCull.cpp */,
|
||||||
|
0061A77A0DB7A7150007094E /* SampleFillType.cpp */,
|
||||||
00ED8C6B0D3E99A800651393 /* SampleDither.cpp */,
|
00ED8C6B0D3E99A800651393 /* SampleDither.cpp */,
|
||||||
|
00648B590DDB15B90087F2E8 /* SampleTypeface.cpp */,
|
||||||
003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */,
|
003FA7090D58CA4D0063AD75 /* SampleMeasure.cpp */,
|
||||||
00ED8C6C0D3E99A800651393 /* SampleEncode.cpp */,
|
00ED8C6C0D3E99A800651393 /* SampleEncode.cpp */,
|
||||||
00ED8C6D0D3E99A800651393 /* SampleFilter.cpp */,
|
00ED8C6D0D3E99A800651393 /* SampleFilter.cpp */,
|
||||||
00ED8C6E0D3E99A800651393 /* SampleFontCache.cpp */,
|
00ED8C6E0D3E99A800651393 /* SampleFontCache.cpp */,
|
||||||
|
0019628F0EACBA2A00447A07 /* SamplePageFlip.cpp */,
|
||||||
|
00B8EBFB0EB64ABC003C2F6F /* SampleDrawLooper.cpp */,
|
||||||
00ED8C6F0D3E99A800651393 /* SampleImage.cpp */,
|
00ED8C6F0D3E99A800651393 /* SampleImage.cpp */,
|
||||||
00ED8C700D3E99A800651393 /* SampleImageDir.cpp */,
|
00ED8C700D3E99A800651393 /* SampleImageDir.cpp */,
|
||||||
0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */,
|
0071BCEE0D746BDF00F667CE /* SampleFilter2.cpp */,
|
||||||
@@ -510,6 +562,7 @@
|
|||||||
003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */,
|
003474EC0D5B61BA00F3F389 /* SampleVertices.cpp */,
|
||||||
000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */,
|
000DC0C50D63796E00854F5A /* SampleTextAlpha.cpp */,
|
||||||
00ED8C710D3E99A800651393 /* SampleLayers.cpp */,
|
00ED8C710D3E99A800651393 /* SampleLayers.cpp */,
|
||||||
|
00C5D2000EC00F0300C6702C /* SampleTests.cpp */,
|
||||||
00ED8C720D3E99A800651393 /* SamplePath.cpp */,
|
00ED8C720D3E99A800651393 /* SamplePath.cpp */,
|
||||||
00ED8C730D3E99A800651393 /* SamplePathEffects.cpp */,
|
00ED8C730D3E99A800651393 /* SamplePathEffects.cpp */,
|
||||||
00ED8C740D3E99A800651393 /* SamplePoints.cpp */,
|
00ED8C740D3E99A800651393 /* SamplePoints.cpp */,
|
||||||
@@ -519,6 +572,9 @@
|
|||||||
00ED8C780D3E99A800651393 /* SampleTextEffects.cpp */,
|
00ED8C780D3E99A800651393 /* SampleTextEffects.cpp */,
|
||||||
00ED8C790D3E99A800651393 /* SampleTextOnPath.cpp */,
|
00ED8C790D3E99A800651393 /* SampleTextOnPath.cpp */,
|
||||||
00ED8C7A0D3E99A800651393 /* SampleTiling.cpp */,
|
00ED8C7A0D3E99A800651393 /* SampleTiling.cpp */,
|
||||||
|
003476830DF8DEC400A270A4 /* SampleCircle.cpp */,
|
||||||
|
003A10160E0C29F800136848 /* SampleOverflow.cpp */,
|
||||||
|
00DB0B0D0E06CEC80061DE48 /* SampleNinePatch.cpp */,
|
||||||
);
|
);
|
||||||
name = Sources;
|
name = Sources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -569,7 +625,6 @@
|
|||||||
00ED8CB20D3E9AFA00651393 /* PBXTargetDependency */,
|
00ED8CB20D3E9AFA00651393 /* PBXTargetDependency */,
|
||||||
0013C7950D94044800B41703 /* PBXTargetDependency */,
|
0013C7950D94044800B41703 /* PBXTargetDependency */,
|
||||||
009A741D0DA11BAE00876C03 /* PBXTargetDependency */,
|
009A741D0DA11BAE00876C03 /* PBXTargetDependency */,
|
||||||
007ECA7C0DA684CF0086775A /* PBXTargetDependency */,
|
|
||||||
0008AF100DABF9BD00477EFB /* PBXTargetDependency */,
|
0008AF100DABF9BD00477EFB /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = SampleCode;
|
name = SampleCode;
|
||||||
@@ -633,10 +688,6 @@
|
|||||||
ProductGroup = 00ED8C1F0D3E999300651393 /* Products */;
|
ProductGroup = 00ED8C1F0D3E999300651393 /* Products */;
|
||||||
ProjectRef = 00ED8C1E0D3E999300651393 /* ports.xcodeproj */;
|
ProjectRef = 00ED8C1E0D3E999300651393 /* ports.xcodeproj */;
|
||||||
},
|
},
|
||||||
{
|
|
||||||
ProductGroup = 007ECA720DA684A20086775A /* Products */;
|
|
||||||
ProjectRef = 007ECA710DA684A20086775A /* pvjpeg.xcodeproj */;
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
ProductGroup = 00ED8C220D3E999300651393 /* Products */;
|
ProductGroup = 00ED8C220D3E999300651393 /* Products */;
|
||||||
ProjectRef = 00ED8C210D3E999300651393 /* views.xcodeproj */;
|
ProjectRef = 00ED8C210D3E999300651393 /* views.xcodeproj */;
|
||||||
@@ -668,13 +719,6 @@
|
|||||||
remoteRef = 0013C7910D94043200B41703 /* PBXContainerItemProxy */;
|
remoteRef = 0013C7910D94043200B41703 /* PBXContainerItemProxy */;
|
||||||
sourceTree = BUILT_PRODUCTS_DIR;
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
};
|
};
|
||||||
007ECA760DA684A20086775A /* libpvjpeg.a */ = {
|
|
||||||
isa = PBXReferenceProxy;
|
|
||||||
fileType = archive.ar;
|
|
||||||
path = libpvjpeg.a;
|
|
||||||
remoteRef = 007ECA750DA684A20086775A /* PBXContainerItemProxy */;
|
|
||||||
sourceTree = BUILT_PRODUCTS_DIR;
|
|
||||||
};
|
|
||||||
009A740E0DA11B1F00876C03 /* libGL.a */ = {
|
009A740E0DA11B1F00876C03 /* libGL.a */ = {
|
||||||
isa = PBXReferenceProxy;
|
isa = PBXReferenceProxy;
|
||||||
fileType = archive.ar;
|
fileType = archive.ar;
|
||||||
@@ -784,23 +828,39 @@
|
|||||||
00ED8C8D0D3E99A800651393 /* SampleTextEffects.cpp in Sources */,
|
00ED8C8D0D3E99A800651393 /* SampleTextEffects.cpp in Sources */,
|
||||||
0017F1490D6A0A6A008D9B31 /* SampleEmboss.cpp in Sources */,
|
0017F1490D6A0A6A008D9B31 /* SampleEmboss.cpp in Sources */,
|
||||||
0017F14A0D6A0A6A008D9B31 /* SampleLines.cpp in Sources */,
|
0017F14A0D6A0A6A008D9B31 /* SampleLines.cpp in Sources */,
|
||||||
00ED8C7D0D3E99A800651393 /* SampleArc.cpp in Sources */,
|
|
||||||
00ED8C810D3E99A800651393 /* SampleEncode.cpp in Sources */,
|
|
||||||
0071BCEF0D746BDF00F667CE /* SampleFilter2.cpp in Sources */,
|
0071BCEF0D746BDF00F667CE /* SampleFilter2.cpp in Sources */,
|
||||||
00ED8C8E0D3E99A800651393 /* SampleTextOnPath.cpp in Sources */,
|
|
||||||
00D315710D5A5B1D004B2209 /* SampleBitmapRect.cpp in Sources */,
|
00D315710D5A5B1D004B2209 /* SampleBitmapRect.cpp in Sources */,
|
||||||
00ED8C850D3E99A800651393 /* SampleImageDir.cpp in Sources */,
|
|
||||||
00ED8C7E0D3E99A800651393 /* SampleCamera.cpp in Sources */,
|
00ED8C7E0D3E99A800651393 /* SampleCamera.cpp in Sources */,
|
||||||
003474ED0D5B61BA00F3F389 /* SampleVertices.cpp in Sources */,
|
003474ED0D5B61BA00F3F389 /* SampleVertices.cpp in Sources */,
|
||||||
00ED8C800D3E99A800651393 /* SampleDither.cpp in Sources */,
|
|
||||||
000DC0C60D63796E00854F5A /* SampleTextAlpha.cpp in Sources */,
|
000DC0C60D63796E00854F5A /* SampleTextAlpha.cpp in Sources */,
|
||||||
00ED8C840D3E99A800651393 /* SampleImage.cpp in Sources */,
|
|
||||||
00ED8C8F0D3E99A800651393 /* SampleTiling.cpp in Sources */,
|
00ED8C8F0D3E99A800651393 /* SampleTiling.cpp in Sources */,
|
||||||
000A1CB00DA522ED003DAC04 /* SamplePolyToPoly.cpp in Sources */,
|
|
||||||
00ED8C890D3E99A800651393 /* SamplePoints.cpp in Sources */,
|
00ED8C890D3E99A800651393 /* SamplePoints.cpp in Sources */,
|
||||||
0017F14B0D6A0A6A008D9B31 /* SamplePatch.cpp in Sources */,
|
|
||||||
00ED8C860D3E99A800651393 /* SampleLayers.cpp in Sources */,
|
|
||||||
00ED8C880D3E99A800651393 /* SamplePathEffects.cpp in Sources */,
|
00ED8C880D3E99A800651393 /* SamplePathEffects.cpp in Sources */,
|
||||||
|
00ED8C8E0D3E99A800651393 /* SampleTextOnPath.cpp in Sources */,
|
||||||
|
00648B5A0DDB15B90087F2E8 /* SampleTypeface.cpp in Sources */,
|
||||||
|
00ED8C840D3E99A800651393 /* SampleImage.cpp in Sources */,
|
||||||
|
0007A8F30DB4DFF30068AF40 /* SampleXfermodes.cpp in Sources */,
|
||||||
|
002919440DEBA08100AF67D5 /* SkBitmapFilter.cpp in Sources */,
|
||||||
|
002919510DEC39C700AF67D5 /* SkConvolutionBitmapFilter.cpp in Sources */,
|
||||||
|
001142AB0DCA20650070D0A3 /* SamplePicture.cpp in Sources */,
|
||||||
|
00298C2A0E7085E7005E85ED /* SampleStrokeText.cpp in Sources */,
|
||||||
|
00ED8C810D3E99A800651393 /* SampleEncode.cpp in Sources */,
|
||||||
|
000A1CB00DA522ED003DAC04 /* SamplePolyToPoly.cpp in Sources */,
|
||||||
|
00F9D6860E7F51680031AAA2 /* SkSetPoly3To3_A.cpp in Sources */,
|
||||||
|
0019628A0EACB9D300447A07 /* SamplePatch.cpp in Sources */,
|
||||||
|
001962900EACBA2A00447A07 /* SamplePageFlip.cpp in Sources */,
|
||||||
|
00ED8C860D3E99A800651393 /* SampleLayers.cpp in Sources */,
|
||||||
|
00C5D1E10EBFFE4D00C6702C /* test.cpp in Sources */,
|
||||||
|
00C5D1E50EC0007400C6702C /* test_drawcolor.cpp in Sources */,
|
||||||
|
00C5D2010EC00F0300C6702C /* SampleTests.cpp in Sources */,
|
||||||
|
00C5D20E0EC0106F00C6702C /* test_drawrect.cpp in Sources */,
|
||||||
|
00ED8C850D3E99A800651393 /* SampleImageDir.cpp in Sources */,
|
||||||
|
003A10170E0C29F800136848 /* SampleOverflow.cpp in Sources */,
|
||||||
|
00ED8C800D3E99A800651393 /* SampleDither.cpp in Sources */,
|
||||||
|
00ED8C7D0D3E99A800651393 /* SampleArc.cpp in Sources */,
|
||||||
|
0061A77B0DB7A7150007094E /* SampleFillType.cpp in Sources */,
|
||||||
|
003476840DF8DEC400A270A4 /* SampleCircle.cpp in Sources */,
|
||||||
|
00B8EBFC0EB64ABC003C2F6F /* SampleDrawLooper.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -817,11 +877,6 @@
|
|||||||
name = animator;
|
name = animator;
|
||||||
targetProxy = 0013C7940D94044800B41703 /* PBXContainerItemProxy */;
|
targetProxy = 0013C7940D94044800B41703 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
007ECA7C0DA684CF0086775A /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
name = pvjpeg;
|
|
||||||
targetProxy = 007ECA7B0DA684CF0086775A /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
009A741D0DA11BAE00876C03 /* PBXTargetDependency */ = {
|
009A741D0DA11BAE00876C03 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = GL;
|
name = GL;
|
||||||
@@ -943,17 +998,24 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
GCC_CW_ASM_SYNTAX = NO;
|
GCC_CW_ASM_SYNTAX = NO;
|
||||||
|
GCC_DEBUGGING_SYMBOLS = full;
|
||||||
GCC_ENABLE_ASM_KEYWORD = NO;
|
GCC_ENABLE_ASM_KEYWORD = NO;
|
||||||
|
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||||
GCC_ENABLE_CPP_RTTI = NO;
|
GCC_ENABLE_CPP_RTTI = NO;
|
||||||
GCC_ENABLE_PASCAL_STRINGS = NO;
|
GCC_ENABLE_PASCAL_STRINGS = NO;
|
||||||
|
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREFIX_HEADER = " ";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
SK_DEBUG,
|
SK_DEBUG,
|
||||||
SK_BUILD_FOR_MAC,
|
SK_BUILD_FOR_MAC,
|
||||||
);
|
);
|
||||||
|
GCC_THREADSAFE_STATICS = NO;
|
||||||
GCC_USE_GCC3_PFE_SUPPORT = NO;
|
GCC_USE_GCC3_PFE_SUPPORT = NO;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
PREBINDING = NO;
|
PREBINDING = NO;
|
||||||
|
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
|
||||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||||
USER_HEADER_SEARCH_PATHS = "../../../include/corecg/** ../../../include/graphics/**";
|
USER_HEADER_SEARCH_PATHS = "../../../include/corecg/** ../../../include/graphics/**";
|
||||||
};
|
};
|
||||||
@@ -967,17 +1029,27 @@
|
|||||||
i386,
|
i386,
|
||||||
);
|
);
|
||||||
GCC_CW_ASM_SYNTAX = NO;
|
GCC_CW_ASM_SYNTAX = NO;
|
||||||
|
GCC_DEBUGGING_SYMBOLS = full;
|
||||||
GCC_ENABLE_ASM_KEYWORD = NO;
|
GCC_ENABLE_ASM_KEYWORD = NO;
|
||||||
|
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||||
GCC_ENABLE_CPP_RTTI = NO;
|
GCC_ENABLE_CPP_RTTI = NO;
|
||||||
GCC_ENABLE_PASCAL_STRINGS = NO;
|
GCC_ENABLE_PASCAL_STRINGS = NO;
|
||||||
|
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
SK_BUILD_FOR_MAC,
|
SK_BUILD_FOR_MAC,
|
||||||
SK_RELEASE,
|
SK_RELEASE,
|
||||||
);
|
);
|
||||||
|
GCC_THREADSAFE_STATICS = NO;
|
||||||
GCC_USE_GCC3_PFE_SUPPORT = NO;
|
GCC_USE_GCC3_PFE_SUPPORT = NO;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
|
||||||
|
GCC_WARN_PEDANTIC = NO;
|
||||||
|
GCC_WARN_SHADOW = YES;
|
||||||
|
GCC_WARN_SIGN_COMPARE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
PREBINDING = NO;
|
PREBINDING = NO;
|
||||||
|
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
|
||||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||||
USER_HEADER_SEARCH_PATHS = "../../../include/corecg/** ../../../include/graphics/**";
|
USER_HEADER_SEARCH_PATHS = "../../../include/corecg/** ../../../include/graphics/**";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,10 +18,11 @@
|
|||||||
001142D70DCA3EE90070D0A3 /* SkPicturePlayback.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */; };
|
001142D70DCA3EE90070D0A3 /* SkPicturePlayback.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */; };
|
||||||
001142D80DCA3EE90070D0A3 /* SkPictureRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */; };
|
001142D80DCA3EE90070D0A3 /* SkPictureRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */; };
|
||||||
001142D90DCA3EE90070D0A3 /* SkPictureRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142D50DCA3EE90070D0A3 /* SkPictureRecord.h */; };
|
001142D90DCA3EE90070D0A3 /* SkPictureRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142D50DCA3EE90070D0A3 /* SkPictureRecord.h */; };
|
||||||
001142F70DCA3FDF0070D0A3 /* SkReader32.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142F50DCA3FDF0070D0A3 /* SkReader32.h */; };
|
|
||||||
001142F80DCA3FDF0070D0A3 /* SkWriter32.h in Headers */ = {isa = PBXBuildFile; fileRef = 001142F60DCA3FDF0070D0A3 /* SkWriter32.h */; };
|
|
||||||
0011430B0DCA458A0070D0A3 /* SkPictureFlat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0011430A0DCA458A0070D0A3 /* SkPictureFlat.h */; };
|
0011430B0DCA458A0070D0A3 /* SkPictureFlat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0011430A0DCA458A0070D0A3 /* SkPictureFlat.h */; };
|
||||||
0011430D0DCA45990070D0A3 /* SkPictureFlat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0011430C0DCA45990070D0A3 /* SkPictureFlat.cpp */; };
|
0011430D0DCA45990070D0A3 /* SkPictureFlat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0011430C0DCA45990070D0A3 /* SkPictureFlat.cpp */; };
|
||||||
|
0019627D0EACB91200447A07 /* SkPageFlipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0019627C0EACB91200447A07 /* SkPageFlipper.cpp */; };
|
||||||
|
0019627F0EACB92A00447A07 /* SkFlipPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0019627E0EACB92A00447A07 /* SkFlipPixelRef.cpp */; };
|
||||||
|
001962810EACB94400447A07 /* SkPathHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001962800EACB94400447A07 /* SkPathHeap.cpp */; };
|
||||||
001FFBBD0CD8D9ED000CDF07 /* SkImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001FFBBC0CD8D9ED000CDF07 /* SkImageRef.cpp */; };
|
001FFBBD0CD8D9ED000CDF07 /* SkImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 001FFBBC0CD8D9ED000CDF07 /* SkImageRef.cpp */; };
|
||||||
0027DCD00B24CA3900076079 /* SkDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0027DCCF0B24CA3900076079 /* SkDevice.cpp */; };
|
0027DCD00B24CA3900076079 /* SkDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0027DCCF0B24CA3900076079 /* SkDevice.cpp */; };
|
||||||
0027DCD20B24CA4E00076079 /* SkDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 0027DCD10B24CA4E00076079 /* SkDevice.h */; };
|
0027DCD20B24CA4E00076079 /* SkDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 0027DCD10B24CA4E00076079 /* SkDevice.h */; };
|
||||||
@@ -64,7 +65,6 @@
|
|||||||
00523EA30C7B335D00D53402 /* SkRadialGradient_Table.h in Headers */ = {isa = PBXBuildFile; fileRef = 00523E920C7B335D00D53402 /* SkRadialGradient_Table.h */; };
|
00523EA30C7B335D00D53402 /* SkRadialGradient_Table.h in Headers */ = {isa = PBXBuildFile; fileRef = 00523E920C7B335D00D53402 /* SkRadialGradient_Table.h */; };
|
||||||
00523EA40C7B335D00D53402 /* SkTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523E930C7B335D00D53402 /* SkTransparentShader.cpp */; };
|
00523EA40C7B335D00D53402 /* SkTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523E930C7B335D00D53402 /* SkTransparentShader.cpp */; };
|
||||||
00523EA50C7B335D00D53402 /* SkUnitMappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523E940C7B335D00D53402 /* SkUnitMappers.cpp */; };
|
00523EA50C7B335D00D53402 /* SkUnitMappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523E940C7B335D00D53402 /* SkUnitMappers.cpp */; };
|
||||||
00523EA70C7B339000D53402 /* SkPicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523EA60C7B339000D53402 /* SkPicture.cpp */; };
|
|
||||||
00523EA90C7B33B100D53402 /* SkUnitMappers.h in Headers */ = {isa = PBXBuildFile; fileRef = 00523EA80C7B33B100D53402 /* SkUnitMappers.h */; };
|
00523EA90C7B33B100D53402 /* SkUnitMappers.h in Headers */ = {isa = PBXBuildFile; fileRef = 00523EA80C7B33B100D53402 /* SkUnitMappers.h */; };
|
||||||
00523F420C7B3C1400D53402 /* SkFlattenable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523F410C7B3C1400D53402 /* SkFlattenable.cpp */; };
|
00523F420C7B3C1400D53402 /* SkFlattenable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00523F410C7B3C1400D53402 /* SkFlattenable.cpp */; };
|
||||||
0053B0EE0D3557960016606F /* SkPaintFlagsDrawFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */; };
|
0053B0EE0D3557960016606F /* SkPaintFlagsDrawFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */; };
|
||||||
@@ -89,7 +89,9 @@
|
|||||||
00A159D10C469A1200DB6CED /* SkBlitRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A159CD0C469A1200DB6CED /* SkBlitRow.h */; };
|
00A159D10C469A1200DB6CED /* SkBlitRow.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A159CD0C469A1200DB6CED /* SkBlitRow.h */; };
|
||||||
00A159D20C469A1200DB6CED /* SkDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A159CE0C469A1200DB6CED /* SkDither.cpp */; };
|
00A159D20C469A1200DB6CED /* SkDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A159CE0C469A1200DB6CED /* SkDither.cpp */; };
|
||||||
00A2188A0B652EEC0056CB69 /* SkMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A218890B652EEC0056CB69 /* SkMask.cpp */; };
|
00A2188A0B652EEC0056CB69 /* SkMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A218890B652EEC0056CB69 /* SkMask.cpp */; };
|
||||||
|
00B4AC4F0E9BF59400A184BF /* SkPicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B4AC4E0E9BF59400A184BF /* SkPicture.cpp */; };
|
||||||
00B5022D09DB127D00A01CD6 /* SkRegionPriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B5022C09DB127D00A01CD6 /* SkRegionPriv.h */; };
|
00B5022D09DB127D00A01CD6 /* SkRegionPriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B5022C09DB127D00A01CD6 /* SkRegionPriv.h */; };
|
||||||
|
00B8EC940EB6A319003C2F6F /* SkLayerDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00B8EC930EB6A319003C2F6F /* SkLayerDrawLooper.cpp */; };
|
||||||
00C88FEF0D89B7920015D427 /* SkUnPreMultiply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C88FEE0D89B7920015D427 /* SkUnPreMultiply.cpp */; };
|
00C88FEF0D89B7920015D427 /* SkUnPreMultiply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00C88FEE0D89B7920015D427 /* SkUnPreMultiply.cpp */; };
|
||||||
FE20DF0C0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20DF0B0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp */; };
|
FE20DF0C0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20DF0B0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp */; };
|
||||||
FE20DF200C7F157B00AAC91E /* SkMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20DF160C7F157B00AAC91E /* SkMovie.cpp */; };
|
FE20DF200C7F157B00AAC91E /* SkMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20DF160C7F157B00AAC91E /* SkMovie.cpp */; };
|
||||||
@@ -259,10 +261,11 @@
|
|||||||
001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPicturePlayback.h; path = ../../libs/graphics/picture/SkPicturePlayback.h; sourceTree = SOURCE_ROOT; };
|
001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPicturePlayback.h; path = ../../libs/graphics/picture/SkPicturePlayback.h; sourceTree = SOURCE_ROOT; };
|
||||||
001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPictureRecord.cpp; path = ../../libs/graphics/picture/SkPictureRecord.cpp; sourceTree = SOURCE_ROOT; };
|
001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPictureRecord.cpp; path = ../../libs/graphics/picture/SkPictureRecord.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
001142D50DCA3EE90070D0A3 /* SkPictureRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPictureRecord.h; path = ../../libs/graphics/picture/SkPictureRecord.h; sourceTree = SOURCE_ROOT; };
|
001142D50DCA3EE90070D0A3 /* SkPictureRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPictureRecord.h; path = ../../libs/graphics/picture/SkPictureRecord.h; sourceTree = SOURCE_ROOT; };
|
||||||
001142F50DCA3FDF0070D0A3 /* SkReader32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkReader32.h; path = ../../libs/graphics/sgl/SkReader32.h; sourceTree = SOURCE_ROOT; };
|
|
||||||
001142F60DCA3FDF0070D0A3 /* SkWriter32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkWriter32.h; path = ../../libs/graphics/sgl/SkWriter32.h; sourceTree = SOURCE_ROOT; };
|
|
||||||
0011430A0DCA458A0070D0A3 /* SkPictureFlat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPictureFlat.h; path = ../../libs/graphics/picture/SkPictureFlat.h; sourceTree = SOURCE_ROOT; };
|
0011430A0DCA458A0070D0A3 /* SkPictureFlat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPictureFlat.h; path = ../../libs/graphics/picture/SkPictureFlat.h; sourceTree = SOURCE_ROOT; };
|
||||||
0011430C0DCA45990070D0A3 /* SkPictureFlat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPictureFlat.cpp; path = ../../libs/graphics/picture/SkPictureFlat.cpp; sourceTree = SOURCE_ROOT; };
|
0011430C0DCA45990070D0A3 /* SkPictureFlat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPictureFlat.cpp; path = ../../libs/graphics/picture/SkPictureFlat.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0019627C0EACB91200447A07 /* SkPageFlipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPageFlipper.cpp; path = ../../libs/corecg/SkPageFlipper.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
0019627E0EACB92A00447A07 /* SkFlipPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFlipPixelRef.cpp; path = ../../libs/graphics/images/SkFlipPixelRef.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
001962800EACB94400447A07 /* SkPathHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPathHeap.cpp; path = ../../libs/graphics/picture/SkPathHeap.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
001FFBBC0CD8D9ED000CDF07 /* SkImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkImageRef.cpp; path = ../../libs/graphics/images/SkImageRef.cpp; sourceTree = SOURCE_ROOT; };
|
001FFBBC0CD8D9ED000CDF07 /* SkImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkImageRef.cpp; path = ../../libs/graphics/images/SkImageRef.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0027DCCF0B24CA3900076079 /* SkDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkDevice.cpp; path = ../../libs/graphics/sgl/SkDevice.cpp; sourceTree = SOURCE_ROOT; };
|
0027DCCF0B24CA3900076079 /* SkDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkDevice.cpp; path = ../../libs/graphics/sgl/SkDevice.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0027DCD10B24CA4E00076079 /* SkDevice.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SkDevice.h; sourceTree = "<group>"; };
|
0027DCD10B24CA4E00076079 /* SkDevice.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SkDevice.h; sourceTree = "<group>"; };
|
||||||
@@ -305,7 +308,6 @@
|
|||||||
00523E920C7B335D00D53402 /* SkRadialGradient_Table.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkRadialGradient_Table.h; path = ../../libs/graphics/effects/SkRadialGradient_Table.h; sourceTree = SOURCE_ROOT; };
|
00523E920C7B335D00D53402 /* SkRadialGradient_Table.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkRadialGradient_Table.h; path = ../../libs/graphics/effects/SkRadialGradient_Table.h; sourceTree = SOURCE_ROOT; };
|
||||||
00523E930C7B335D00D53402 /* SkTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkTransparentShader.cpp; path = ../../libs/graphics/effects/SkTransparentShader.cpp; sourceTree = SOURCE_ROOT; };
|
00523E930C7B335D00D53402 /* SkTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkTransparentShader.cpp; path = ../../libs/graphics/effects/SkTransparentShader.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00523E940C7B335D00D53402 /* SkUnitMappers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkUnitMappers.cpp; path = ../../libs/graphics/effects/SkUnitMappers.cpp; sourceTree = SOURCE_ROOT; };
|
00523E940C7B335D00D53402 /* SkUnitMappers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkUnitMappers.cpp; path = ../../libs/graphics/effects/SkUnitMappers.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00523EA60C7B339000D53402 /* SkPicture.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkPicture.cpp; path = ../../libs/graphics/sgl/SkPicture.cpp; sourceTree = SOURCE_ROOT; };
|
|
||||||
00523EA80C7B33B100D53402 /* SkUnitMappers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SkUnitMappers.h; sourceTree = "<group>"; };
|
00523EA80C7B33B100D53402 /* SkUnitMappers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SkUnitMappers.h; sourceTree = "<group>"; };
|
||||||
00523F410C7B3C1400D53402 /* SkFlattenable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkFlattenable.cpp; path = ../../libs/graphics/sgl/SkFlattenable.cpp; sourceTree = SOURCE_ROOT; };
|
00523F410C7B3C1400D53402 /* SkFlattenable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkFlattenable.cpp; path = ../../libs/graphics/sgl/SkFlattenable.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkPaintFlagsDrawFilter.cpp; path = ../../libs/graphics/effects/SkPaintFlagsDrawFilter.cpp; sourceTree = SOURCE_ROOT; };
|
0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkPaintFlagsDrawFilter.cpp; path = ../../libs/graphics/effects/SkPaintFlagsDrawFilter.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
@@ -330,7 +332,9 @@
|
|||||||
00A159CD0C469A1200DB6CED /* SkBlitRow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkBlitRow.h; path = ../../libs/graphics/sgl/SkBlitRow.h; sourceTree = SOURCE_ROOT; };
|
00A159CD0C469A1200DB6CED /* SkBlitRow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkBlitRow.h; path = ../../libs/graphics/sgl/SkBlitRow.h; sourceTree = SOURCE_ROOT; };
|
||||||
00A159CE0C469A1200DB6CED /* SkDither.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkDither.cpp; path = ../../libs/graphics/sgl/SkDither.cpp; sourceTree = SOURCE_ROOT; };
|
00A159CE0C469A1200DB6CED /* SkDither.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkDither.cpp; path = ../../libs/graphics/sgl/SkDither.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00A218890B652EEC0056CB69 /* SkMask.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkMask.cpp; path = ../../libs/graphics/sgl/SkMask.cpp; sourceTree = SOURCE_ROOT; };
|
00A218890B652EEC0056CB69 /* SkMask.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkMask.cpp; path = ../../libs/graphics/sgl/SkMask.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
00B4AC4E0E9BF59400A184BF /* SkPicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPicture.cpp; path = ../../libs/graphics/picture/SkPicture.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00B5022C09DB127D00A01CD6 /* SkRegionPriv.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkRegionPriv.h; path = ../../libs/corecg/SkRegionPriv.h; sourceTree = SOURCE_ROOT; };
|
00B5022C09DB127D00A01CD6 /* SkRegionPriv.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SkRegionPriv.h; path = ../../libs/corecg/SkRegionPriv.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
00B8EC930EB6A319003C2F6F /* SkLayerDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkLayerDrawLooper.cpp; path = ../../libs/graphics/effects/SkLayerDrawLooper.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
00C88FEE0D89B7920015D427 /* SkUnPreMultiply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkUnPreMultiply.cpp; path = ../../libs/graphics/sgl/SkUnPreMultiply.cpp; sourceTree = SOURCE_ROOT; };
|
00C88FEE0D89B7920015D427 /* SkUnPreMultiply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkUnPreMultiply.cpp; path = ../../libs/graphics/sgl/SkUnPreMultiply.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
D2AAC06F0554671400DB518D /* libgraphics.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgraphics.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
D2AAC06F0554671400DB518D /* libgraphics.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgraphics.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
FE20DF0B0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkKernel33MaskFilter.cpp; path = ../../libs/graphics/effects/SkKernel33MaskFilter.cpp; sourceTree = SOURCE_ROOT; };
|
FE20DF0B0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SkKernel33MaskFilter.cpp; path = ../../libs/graphics/effects/SkKernel33MaskFilter.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
@@ -503,9 +507,8 @@
|
|||||||
001142D10DCA3ED10070D0A3 /* picture */ = {
|
001142D10DCA3ED10070D0A3 /* picture */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
00523EA60C7B339000D53402 /* SkPicture.cpp */,
|
001962800EACB94400447A07 /* SkPathHeap.cpp */,
|
||||||
001142F50DCA3FDF0070D0A3 /* SkReader32.h */,
|
00B4AC4E0E9BF59400A184BF /* SkPicture.cpp */,
|
||||||
001142F60DCA3FDF0070D0A3 /* SkWriter32.h */,
|
|
||||||
001142D20DCA3EE90070D0A3 /* SkPicturePlayback.cpp */,
|
001142D20DCA3EE90070D0A3 /* SkPicturePlayback.cpp */,
|
||||||
001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */,
|
001142D30DCA3EE90070D0A3 /* SkPicturePlayback.h */,
|
||||||
001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */,
|
001142D40DCA3EE90070D0A3 /* SkPictureRecord.cpp */,
|
||||||
@@ -657,6 +660,8 @@
|
|||||||
FE5F48C5094797E90095980F /* images */ = {
|
FE5F48C5094797E90095980F /* images */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
0019627E0EACB92A00447A07 /* SkFlipPixelRef.cpp */,
|
||||||
|
0019627C0EACB91200447A07 /* SkPageFlipper.cpp */,
|
||||||
003FF1670DAE9C0F00601F6B /* SkImageRef_GlobalPool.cpp */,
|
003FF1670DAE9C0F00601F6B /* SkImageRef_GlobalPool.cpp */,
|
||||||
009A39620DAE52FA00EB3A73 /* SkImageRefPool.cpp */,
|
009A39620DAE52FA00EB3A73 /* SkImageRefPool.cpp */,
|
||||||
008180E60D92D57300A2E56D /* SkScaledBitmapSampler.cpp */,
|
008180E60D92D57300A2E56D /* SkScaledBitmapSampler.cpp */,
|
||||||
@@ -671,6 +676,7 @@
|
|||||||
FE5F48C8094798660095980F /* effects */ = {
|
FE5F48C8094798660095980F /* effects */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
00B8EC930EB6A319003C2F6F /* SkLayerDrawLooper.cpp */,
|
||||||
009A75E90DA1DF8400876C03 /* SkNinePatch.cpp */,
|
009A75E90DA1DF8400876C03 /* SkNinePatch.cpp */,
|
||||||
0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */,
|
0053B0ED0D3557960016606F /* SkPaintFlagsDrawFilter.cpp */,
|
||||||
003E6EFC0D09EF84005435C0 /* SkColorMatrix.cpp */,
|
003E6EFC0D09EF84005435C0 /* SkColorMatrix.cpp */,
|
||||||
@@ -939,8 +945,6 @@
|
|||||||
009A75E80DA1DF5D00876C03 /* SkDrawProcs.h in Headers */,
|
009A75E80DA1DF5D00876C03 /* SkDrawProcs.h in Headers */,
|
||||||
001142D70DCA3EE90070D0A3 /* SkPicturePlayback.h in Headers */,
|
001142D70DCA3EE90070D0A3 /* SkPicturePlayback.h in Headers */,
|
||||||
001142D90DCA3EE90070D0A3 /* SkPictureRecord.h in Headers */,
|
001142D90DCA3EE90070D0A3 /* SkPictureRecord.h in Headers */,
|
||||||
001142F70DCA3FDF0070D0A3 /* SkReader32.h in Headers */,
|
|
||||||
001142F80DCA3FDF0070D0A3 /* SkWriter32.h in Headers */,
|
|
||||||
0011430B0DCA458A0070D0A3 /* SkPictureFlat.h in Headers */,
|
0011430B0DCA458A0070D0A3 /* SkPictureFlat.h in Headers */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@@ -1026,7 +1030,6 @@
|
|||||||
00523EA10C7B335D00D53402 /* SkGradientShader.cpp in Sources */,
|
00523EA10C7B335D00D53402 /* SkGradientShader.cpp in Sources */,
|
||||||
00523EA40C7B335D00D53402 /* SkTransparentShader.cpp in Sources */,
|
00523EA40C7B335D00D53402 /* SkTransparentShader.cpp in Sources */,
|
||||||
00523EA50C7B335D00D53402 /* SkUnitMappers.cpp in Sources */,
|
00523EA50C7B335D00D53402 /* SkUnitMappers.cpp in Sources */,
|
||||||
00523EA70C7B339000D53402 /* SkPicture.cpp in Sources */,
|
|
||||||
00523F420C7B3C1400D53402 /* SkFlattenable.cpp in Sources */,
|
00523F420C7B3C1400D53402 /* SkFlattenable.cpp in Sources */,
|
||||||
FE20DF0C0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp in Sources */,
|
FE20DF0C0C7F154F00AAC91E /* SkKernel33MaskFilter.cpp in Sources */,
|
||||||
FE20DF200C7F157B00AAC91E /* SkMovie.cpp in Sources */,
|
FE20DF200C7F157B00AAC91E /* SkMovie.cpp in Sources */,
|
||||||
@@ -1094,6 +1097,11 @@
|
|||||||
0011430D0DCA45990070D0A3 /* SkPictureFlat.cpp in Sources */,
|
0011430D0DCA45990070D0A3 /* SkPictureFlat.cpp in Sources */,
|
||||||
009B1EAE0DD224CF00EDFFF4 /* SkPixelRef.cpp in Sources */,
|
009B1EAE0DD224CF00EDFFF4 /* SkPixelRef.cpp in Sources */,
|
||||||
007336190DDC859F00A0DB2A /* SkPtrRecorder.cpp in Sources */,
|
007336190DDC859F00A0DB2A /* SkPtrRecorder.cpp in Sources */,
|
||||||
|
00B4AC4F0E9BF59400A184BF /* SkPicture.cpp in Sources */,
|
||||||
|
0019627D0EACB91200447A07 /* SkPageFlipper.cpp in Sources */,
|
||||||
|
0019627F0EACB92A00447A07 /* SkFlipPixelRef.cpp in Sources */,
|
||||||
|
001962810EACB94400447A07 /* SkPathHeap.cpp in Sources */,
|
||||||
|
00B8EC940EB6A319003C2F6F /* SkLayerDrawLooper.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
62
pdk/README
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
Building the pdk
|
||||||
|
|
||||||
|
1) get a cupcake source tree
|
||||||
|
|
||||||
|
2) from the root
|
||||||
|
. build/envsetup.sh
|
||||||
|
|
||||||
|
3) run choosecombo
|
||||||
|
Build for the simulator or the device?
|
||||||
|
1. Device
|
||||||
|
2. Simulator
|
||||||
|
|
||||||
|
Which would you like? [1] 1
|
||||||
|
|
||||||
|
|
||||||
|
Build type choices are:
|
||||||
|
1. release
|
||||||
|
2. debug
|
||||||
|
|
||||||
|
Which would you like? [1] 1
|
||||||
|
|
||||||
|
|
||||||
|
Product choices are:
|
||||||
|
0. emulator
|
||||||
|
1. generic
|
||||||
|
2. sim
|
||||||
|
3. surf
|
||||||
|
You can also type the name of a product if you know it.
|
||||||
|
Which would you like? [generic] 1
|
||||||
|
|
||||||
|
|
||||||
|
Variant choices are:
|
||||||
|
1. user
|
||||||
|
2. userdebug
|
||||||
|
3. eng
|
||||||
|
Which would you like? [eng] 3
|
||||||
|
|
||||||
|
============================================
|
||||||
|
TARGET_PRODUCT=generic
|
||||||
|
TARGET_BUILD_VARIANT=eng
|
||||||
|
TARGET_SIMULATOR=false
|
||||||
|
TARGET_BUILD_TYPE=release
|
||||||
|
TARGET_ARCH=arm
|
||||||
|
HOST_ARCH=x86
|
||||||
|
HOST_OS=linux
|
||||||
|
HOST_BUILD_TYPE=release
|
||||||
|
BUILD_ID=
|
||||||
|
============================================
|
||||||
|
|
||||||
|
4) mkdir dist
|
||||||
|
mkdir logs
|
||||||
|
mkpdkcupcake.sh
|
||||||
|
|
||||||
|
(which contains:
|
||||||
|
|
||||||
|
DT=`date +%y%m%d-%H%M%S`
|
||||||
|
#time make -j4 PRODUCT-generic-eng pdk dist DIST_DIR=dist 2>&1 | tee logs/$DT
|
||||||
|
time make -j4 pdk dist DIST_DIR=dist 2>&1 | tee logs/$DT
|
||||||
|
|
||||||
|
so you can see the results of the build in the logs directory.)
|
||||||
|
|
||||||
|
5) the pdk tar file is put in the dist directory.
|
||||||
268
pdk/docs/_audio_hardware_interface_8h-source.html
Executable file
@@ -0,0 +1,268 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1>AudioHardwareInterface.h</h1><a href="_audio_hardware_interface_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
|
||||||
|
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2007 The Android Open Source Project</span>
|
||||||
|
<a name="l00003"></a>00003 <span class="comment"> *</span>
|
||||||
|
<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
|
||||||
|
<a name="l00007"></a>00007 <span class="comment"> *</span>
|
||||||
|
<a name="l00008"></a>00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
|
||||||
|
<a name="l00009"></a>00009 <span class="comment"> *</span>
|
||||||
|
<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
|
||||||
|
<a name="l00015"></a>00015 <span class="comment"> */</span>
|
||||||
|
<a name="l00016"></a>00016
|
||||||
|
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef ANDROID_AUDIO_HARDWARE_INTERFACE_H</span>
|
||||||
|
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define ANDROID_AUDIO_HARDWARE_INTERFACE_H</span>
|
||||||
|
<a name="l00019"></a>00019 <span class="preprocessor"></span>
|
||||||
|
<a name="l00020"></a>00020 <span class="preprocessor">#include <stdint.h></span>
|
||||||
|
<a name="l00021"></a>00021 <span class="preprocessor">#include <sys/types.h></span>
|
||||||
|
<a name="l00022"></a>00022
|
||||||
|
<a name="l00023"></a>00023 <span class="preprocessor">#include <utils/Errors.h></span>
|
||||||
|
<a name="l00024"></a>00024 <span class="preprocessor">#include <utils/Vector.h></span>
|
||||||
|
<a name="l00025"></a>00025 <span class="preprocessor">#include <utils/String16.h></span>
|
||||||
|
<a name="l00026"></a>00026
|
||||||
|
<a name="l00027"></a>00027 <span class="preprocessor">#include <media/IAudioFlinger.h></span>
|
||||||
|
<a name="l00028"></a>00028 <span class="preprocessor">#include "media/AudioSystem.h"</span>
|
||||||
|
<a name="l00029"></a>00029
|
||||||
|
<a name="l00030"></a>00030
|
||||||
|
<a name="l00031"></a><a class="code" href="namespaceandroid.html">00031</a> <span class="keyword">namespace </span>android {
|
||||||
|
<a name="l00032"></a>00032
|
||||||
|
<a name="l00033"></a>00033 <span class="comment">// ----------------------------------------------------------------------------</span>
|
||||||
|
<a name="l00034"></a>00034 <span class="comment"></span>
|
||||||
|
<a name="l00035"></a>00035 <span class="comment">/**</span>
|
||||||
|
<a name="l00036"></a>00036 <span class="comment"> * AudioStreamOut is the abstraction interface for the audio output hardware.</span>
|
||||||
|
<a name="l00037"></a>00037 <span class="comment"> *</span>
|
||||||
|
<a name="l00038"></a>00038 <span class="comment"> * It provides information about various properties of the audio output hardware driver.</span>
|
||||||
|
<a name="l00039"></a>00039 <span class="comment"> */</span>
|
||||||
|
<a name="l00040"></a><a class="code" href="classandroid_1_1_audio_stream_out.html">00040</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a> {
|
||||||
|
<a name="l00041"></a>00041 <span class="keyword">public</span>:
|
||||||
|
<a name="l00042"></a>00042 <span class="keyword">virtual</span> <a class="code" href="classandroid_1_1_audio_stream_out.html#09074dbae95b82d4f83c513035a0034f">~AudioStreamOut</a>() = 0;
|
||||||
|
<a name="l00043"></a>00043 <span class="comment"></span>
|
||||||
|
<a name="l00044"></a>00044 <span class="comment"> /** return audio sampling rate in hz - eg. 44100 */</span>
|
||||||
|
<a name="l00045"></a>00045 <span class="keyword">virtual</span> uint32_t <a class="code" href="classandroid_1_1_audio_stream_out.html#6bb028e125d13289f26d3d74f851c921" title="return audio sampling rate in hz - eg.">sampleRate</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00046"></a>00046 <span class="comment"></span>
|
||||||
|
<a name="l00047"></a>00047 <span class="comment"> /** returns size of output buffer - eg. 4800 */</span>
|
||||||
|
<a name="l00048"></a>00048 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1_audio_stream_out.html#7b3c5f2ce79b9b6f167408f63d19af0a" title="returns size of output buffer - eg.">bufferSize</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00049"></a>00049 <span class="comment"></span>
|
||||||
|
<a name="l00050"></a>00050 <span class="comment"> /**</span>
|
||||||
|
<a name="l00051"></a>00051 <span class="comment"> * return number of output audio channels.</span>
|
||||||
|
<a name="l00052"></a>00052 <span class="comment"> * Acceptable values are 1 (mono) or 2 (stereo)</span>
|
||||||
|
<a name="l00053"></a>00053 <span class="comment"> */</span>
|
||||||
|
<a name="l00054"></a>00054 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classandroid_1_1_audio_stream_out.html#4e880a5379c168e8f68c26827e41275b" title="return number of output audio channels.">channelCount</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00055"></a>00055 <span class="comment"></span>
|
||||||
|
<a name="l00056"></a>00056 <span class="comment"> /**</span>
|
||||||
|
<a name="l00057"></a>00057 <span class="comment"> * return audio format in 8bit or 16bit PCM format -</span>
|
||||||
|
<a name="l00058"></a>00058 <span class="comment"> * eg. AudioSystem:PCM_16_BIT</span>
|
||||||
|
<a name="l00059"></a>00059 <span class="comment"> */</span>
|
||||||
|
<a name="l00060"></a>00060 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classandroid_1_1_audio_stream_out.html#eb2b430bbff4eebd8fb8590507b1dce1" title="return audio format in 8bit or 16bit PCM format - eg.">format</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00061"></a>00061 <span class="comment"></span>
|
||||||
|
<a name="l00062"></a>00062 <span class="comment"> /**</span>
|
||||||
|
<a name="l00063"></a>00063 <span class="comment"> * return the frame size (number of bytes per sample).</span>
|
||||||
|
<a name="l00064"></a>00064 <span class="comment"> */</span>
|
||||||
|
<a name="l00065"></a><a class="code" href="classandroid_1_1_audio_stream_out.html#66b7c4bb510db4060adfd03a376897d8">00065</a> uint32_t <a class="code" href="classandroid_1_1_audio_stream_out.html#66b7c4bb510db4060adfd03a376897d8" title="return the frame size (number of bytes per sample).">frameSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classandroid_1_1_audio_stream_out.html#4e880a5379c168e8f68c26827e41275b" title="return number of output audio channels.">channelCount</a>()*((<a class="code" href="classandroid_1_1_audio_stream_out.html#eb2b430bbff4eebd8fb8590507b1dce1" title="return audio format in 8bit or 16bit PCM format - eg.">format</a>()==AudioSystem::PCM_16_BIT)?<span class="keyword">sizeof</span>(int16_t):<span class="keyword">sizeof</span>(int8_t)); }
|
||||||
|
<a name="l00066"></a>00066 <span class="comment"></span>
|
||||||
|
<a name="l00067"></a>00067 <span class="comment"> /**</span>
|
||||||
|
<a name="l00068"></a>00068 <span class="comment"> * return the audio hardware driver latency in milli seconds.</span>
|
||||||
|
<a name="l00069"></a>00069 <span class="comment"> */</span>
|
||||||
|
<a name="l00070"></a>00070 <span class="keyword">virtual</span> uint32_t <a class="code" href="classandroid_1_1_audio_stream_out.html#c698a3d95cf0829dcfe283cd5ea437cb" title="return the audio hardware driver latency in milli seconds.">latency</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00071"></a>00071 <span class="comment"></span>
|
||||||
|
<a name="l00072"></a>00072 <span class="comment"> /**</span>
|
||||||
|
<a name="l00073"></a>00073 <span class="comment"> * Use this method in situations where audio mixing is done in the</span>
|
||||||
|
<a name="l00074"></a>00074 <span class="comment"> * hardware. This method serves as a direct interface with hardware,</span>
|
||||||
|
<a name="l00075"></a>00075 <span class="comment"> * allowing you to directly set the volume as apposed to via the framework.</span>
|
||||||
|
<a name="l00076"></a>00076 <span class="comment"> * This method might produce multiple PCM outputs or hardware accelerated</span>
|
||||||
|
<a name="l00077"></a>00077 <span class="comment"> * codecs, such as MP3 or AAC.</span>
|
||||||
|
<a name="l00078"></a>00078 <span class="comment"> */</span>
|
||||||
|
<a name="l00079"></a>00079 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_stream_out.html#e6d301925d193c25561b42239c7f44b6" title="Use this method in situations where audio mixing is done in the hardware.">setVolume</a>(<span class="keywordtype">float</span> volume) = 0;
|
||||||
|
<a name="l00080"></a>00080 <span class="comment"></span>
|
||||||
|
<a name="l00081"></a>00081 <span class="comment"> /** write audio buffer to driver. Returns number of bytes written */</span>
|
||||||
|
<a name="l00082"></a>00082 <span class="keyword">virtual</span> ssize_t <a class="code" href="classandroid_1_1_audio_stream_out.html#cba177e4a4a35a87ab9f8aa2a9c0e78e" title="write audio buffer to driver.">write</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">size_t</span> bytes) = 0;
|
||||||
|
<a name="l00083"></a>00083 <span class="comment"></span>
|
||||||
|
<a name="l00084"></a>00084 <span class="comment"> /** dump the state of the audio output device */</span>
|
||||||
|
<a name="l00085"></a>00085 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_stream_out.html#97e3cc4610ba40d6c37b3d376a032b98" title="dump the state of the audio output device">dump</a>(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> Vector<String16>& args) = 0;
|
||||||
|
<a name="l00086"></a>00086 };
|
||||||
|
<a name="l00087"></a>00087 <span class="comment"></span>
|
||||||
|
<a name="l00088"></a>00088 <span class="comment">/**</span>
|
||||||
|
<a name="l00089"></a>00089 <span class="comment"> * AudioStreamIn is the abstraction interface for the audio input hardware.</span>
|
||||||
|
<a name="l00090"></a>00090 <span class="comment"> *</span>
|
||||||
|
<a name="l00091"></a>00091 <span class="comment"> * It defines the various properties of the audio hardware input driver.</span>
|
||||||
|
<a name="l00092"></a>00092 <span class="comment"> */</span>
|
||||||
|
<a name="l00093"></a><a class="code" href="classandroid_1_1_audio_stream_in.html">00093</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a> {
|
||||||
|
<a name="l00094"></a>00094 <span class="keyword">public</span>:
|
||||||
|
<a name="l00095"></a>00095 <span class="keyword">virtual</span> <a class="code" href="classandroid_1_1_audio_stream_in.html#72067577568bbdd0163c1369fe80f101">~AudioStreamIn</a>() = 0;
|
||||||
|
<a name="l00096"></a>00096 <span class="comment"></span>
|
||||||
|
<a name="l00097"></a>00097 <span class="comment"> /** return the input buffer size allowed by audio driver */</span>
|
||||||
|
<a name="l00098"></a>00098 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1_audio_stream_in.html#a458f9cde3edde82f256af7eaa7b2ddf" title="return the input buffer size allowed by audio driver">bufferSize</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00099"></a>00099 <span class="comment"></span>
|
||||||
|
<a name="l00100"></a>00100 <span class="comment"> /** return the number of audio input channels */</span>
|
||||||
|
<a name="l00101"></a>00101 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classandroid_1_1_audio_stream_in.html#04f84006dd5f2e0a5e512897a039f851" title="return the number of audio input channels">channelCount</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00102"></a>00102 <span class="comment"></span>
|
||||||
|
<a name="l00103"></a>00103 <span class="comment"> /**</span>
|
||||||
|
<a name="l00104"></a>00104 <span class="comment"> * return audio format in 8bit or 16bit PCM format -</span>
|
||||||
|
<a name="l00105"></a>00105 <span class="comment"> * eg. AudioSystem:PCM_16_BIT</span>
|
||||||
|
<a name="l00106"></a>00106 <span class="comment"> */</span>
|
||||||
|
<a name="l00107"></a>00107 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classandroid_1_1_audio_stream_in.html#4ade98c5243b9ed5f3a71a8f36e74b36" title="return audio format in 8bit or 16bit PCM format - eg.">format</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00108"></a>00108 <span class="comment"></span>
|
||||||
|
<a name="l00109"></a>00109 <span class="comment"> /**</span>
|
||||||
|
<a name="l00110"></a>00110 <span class="comment"> * return the frame size (number of bytes per sample).</span>
|
||||||
|
<a name="l00111"></a>00111 <span class="comment"> */</span>
|
||||||
|
<a name="l00112"></a><a class="code" href="classandroid_1_1_audio_stream_in.html#43d2c6b97806c005f0717a7bb6f7595c">00112</a> uint32_t <a class="code" href="classandroid_1_1_audio_stream_in.html#43d2c6b97806c005f0717a7bb6f7595c" title="return the frame size (number of bytes per sample).">frameSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classandroid_1_1_audio_stream_in.html#04f84006dd5f2e0a5e512897a039f851" title="return the number of audio input channels">channelCount</a>()*((<a class="code" href="classandroid_1_1_audio_stream_in.html#4ade98c5243b9ed5f3a71a8f36e74b36" title="return audio format in 8bit or 16bit PCM format - eg.">format</a>()==AudioSystem::PCM_16_BIT)?<span class="keyword">sizeof</span>(int16_t):<span class="keyword">sizeof</span>(int8_t)); }
|
||||||
|
<a name="l00113"></a>00113 <span class="comment"></span>
|
||||||
|
<a name="l00114"></a>00114 <span class="comment"> /** set the input gain for the audio driver. This method is for</span>
|
||||||
|
<a name="l00115"></a>00115 <span class="comment"> * for future use */</span>
|
||||||
|
<a name="l00116"></a>00116 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_stream_in.html#339822afb3f2f2ac1b4c775d31d12440" title="set the input gain for the audio driver.">setGain</a>(<span class="keywordtype">float</span> gain) = 0;
|
||||||
|
<a name="l00117"></a>00117 <span class="comment"></span>
|
||||||
|
<a name="l00118"></a>00118 <span class="comment"> /** read audio buffer in from audio driver */</span>
|
||||||
|
<a name="l00119"></a>00119 <span class="keyword">virtual</span> ssize_t <a class="code" href="classandroid_1_1_audio_stream_in.html#7c313cbfbb47dafd90f3225bcd26e592" title="read audio buffer in from audio driver">read</a>(<span class="keywordtype">void</span>* buffer, ssize_t bytes) = 0;
|
||||||
|
<a name="l00120"></a>00120 <span class="comment"></span>
|
||||||
|
<a name="l00121"></a>00121 <span class="comment"> /** dump the state of the audio input device */</span>
|
||||||
|
<a name="l00122"></a>00122 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_stream_in.html#18c3760208bfb99498715a0d4977f675" title="dump the state of the audio input device">dump</a>(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> Vector<String16>& args) = 0;
|
||||||
|
<a name="l00123"></a>00123 <span class="comment"></span>
|
||||||
|
<a name="l00124"></a>00124 <span class="comment"> /**</span>
|
||||||
|
<a name="l00125"></a>00125 <span class="comment"> * Put the audio hardware input into standby mode. Returns</span>
|
||||||
|
<a name="l00126"></a>00126 <span class="comment"> * status based on include/utils/Errors.h</span>
|
||||||
|
<a name="l00127"></a>00127 <span class="comment"> */</span>
|
||||||
|
<a name="l00128"></a>00128 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_stream_in.html#93fab46e8afdbaedd4d20cc6ee2b7c41" title="Put the audio hardware input into standby mode.">standby</a>() = 0;
|
||||||
|
<a name="l00129"></a>00129
|
||||||
|
<a name="l00130"></a>00130 };
|
||||||
|
<a name="l00131"></a>00131 <span class="comment"></span>
|
||||||
|
<a name="l00132"></a>00132 <span class="comment">/**</span>
|
||||||
|
<a name="l00133"></a>00133 <span class="comment"> * AudioHardwareInterface.h defines the interface to the audio hardware abstraction layer.</span>
|
||||||
|
<a name="l00134"></a>00134 <span class="comment"> *</span>
|
||||||
|
<a name="l00135"></a>00135 <span class="comment"> * The interface supports setting and getting parameters, selecting audio routing</span>
|
||||||
|
<a name="l00136"></a>00136 <span class="comment"> * paths, and defining input and output streams.</span>
|
||||||
|
<a name="l00137"></a>00137 <span class="comment"> *</span>
|
||||||
|
<a name="l00138"></a>00138 <span class="comment"> * AudioFlinger initializes the audio hardware and immediately opens an output stream.</span>
|
||||||
|
<a name="l00139"></a>00139 <span class="comment"> * You can set Audio routing to output to handset, speaker, Bluetooth, or a headset.</span>
|
||||||
|
<a name="l00140"></a>00140 <span class="comment"> *</span>
|
||||||
|
<a name="l00141"></a>00141 <span class="comment"> * The audio input stream is initialized when AudioFlinger is called to carry out</span>
|
||||||
|
<a name="l00142"></a>00142 <span class="comment"> * a record operation.</span>
|
||||||
|
<a name="l00143"></a>00143 <span class="comment"> */</span>
|
||||||
|
<a name="l00144"></a><a class="code" href="classandroid_1_1_audio_hardware_interface.html">00144</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1_audio_hardware_interface.html" title="AudioHardwareInterface.h defines the interface to the audio hardware abstraction...">AudioHardwareInterface</a>
|
||||||
|
<a name="l00145"></a>00145 {
|
||||||
|
<a name="l00146"></a>00146 <span class="keyword">public</span>:<span class="comment"></span>
|
||||||
|
<a name="l00147"></a>00147 <span class="comment"> /**</span>
|
||||||
|
<a name="l00148"></a>00148 <span class="comment"> * check to see if the audio hardware interface has been initialized.</span>
|
||||||
|
<a name="l00149"></a>00149 <span class="comment"> * return status based on values defined in include/utils/Errors.h</span>
|
||||||
|
<a name="l00150"></a>00150 <span class="comment"> */</span>
|
||||||
|
<a name="l00151"></a>00151 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#b7e19e09fa6cbc07c127122fa9866c50" title="check to see if the audio hardware interface has been initialized.">initCheck</a>() = 0;
|
||||||
|
<a name="l00152"></a>00152 <span class="comment"></span>
|
||||||
|
<a name="l00153"></a>00153 <span class="comment"> /**</span>
|
||||||
|
<a name="l00154"></a>00154 <span class="comment"> * put the audio hardware into standby mode to conserve power. Returns</span>
|
||||||
|
<a name="l00155"></a>00155 <span class="comment"> * status based on include/utils/Errors.h</span>
|
||||||
|
<a name="l00156"></a>00156 <span class="comment"> */</span>
|
||||||
|
<a name="l00157"></a>00157 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#61121d365bb4d182bdec2c1b12fb1178" title="put the audio hardware into standby mode to conserve power.">standby</a>() = 0;
|
||||||
|
<a name="l00158"></a>00158 <span class="comment"></span>
|
||||||
|
<a name="l00159"></a>00159 <span class="comment"> /** set the audio volume of a voice call. Range is between 0.0 and 1.0 */</span>
|
||||||
|
<a name="l00160"></a>00160 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#7b7418072df1eeaacc89cd0c725755f6" title="set the audio volume of a voice call.">setVoiceVolume</a>(<span class="keywordtype">float</span> volume) = 0;
|
||||||
|
<a name="l00161"></a>00161 <span class="comment"></span>
|
||||||
|
<a name="l00162"></a>00162 <span class="comment"> /**</span>
|
||||||
|
<a name="l00163"></a>00163 <span class="comment"> * set the audio volume for all audio activities other than voice call.</span>
|
||||||
|
<a name="l00164"></a>00164 <span class="comment"> * Range between 0.0 and 1.0. If any value other than NO_ERROR is returned,</span>
|
||||||
|
<a name="l00165"></a>00165 <span class="comment"> * the software mixer will emulate this capability.</span>
|
||||||
|
<a name="l00166"></a>00166 <span class="comment"> */</span>
|
||||||
|
<a name="l00167"></a>00167 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#925092e556eb89f304bcebb09f90c9a3" title="set the audio volume for all audio activities other than voice call.">setMasterVolume</a>(<span class="keywordtype">float</span> volume) = 0;
|
||||||
|
<a name="l00168"></a>00168 <span class="comment"></span>
|
||||||
|
<a name="l00169"></a>00169 <span class="comment"> /**</span>
|
||||||
|
<a name="l00170"></a>00170 <span class="comment"> * Audio routing methods. Routes defined in include/hardware/AudioSystem.h.</span>
|
||||||
|
<a name="l00171"></a>00171 <span class="comment"> * Audio routes can be (ROUTE_EARPIECE | ROUTE_SPEAKER | ROUTE_BLUETOOTH</span>
|
||||||
|
<a name="l00172"></a>00172 <span class="comment"> * | ROUTE_HEADSET)</span>
|
||||||
|
<a name="l00173"></a>00173 <span class="comment"> *</span>
|
||||||
|
<a name="l00174"></a>00174 <span class="comment"> * setRouting sets the routes for a mode. This is called at startup. It is</span>
|
||||||
|
<a name="l00175"></a>00175 <span class="comment"> * also called when a new device is connected, such as a wired headset is</span>
|
||||||
|
<a name="l00176"></a>00176 <span class="comment"> * plugged in or a Bluetooth headset is paired.</span>
|
||||||
|
<a name="l00177"></a>00177 <span class="comment"> */</span>
|
||||||
|
<a name="l00178"></a>00178 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#39b2690e19219425b8cff093ef83bfb1" title="Audio routing methods.">setRouting</a>(<span class="keywordtype">int</span> mode, uint32_t routes) = 0;
|
||||||
|
<a name="l00179"></a>00179
|
||||||
|
<a name="l00180"></a>00180 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#1886de8fff2342ae628dbbbc0c45ba83">getRouting</a>(<span class="keywordtype">int</span> mode, uint32_t* routes) = 0;
|
||||||
|
<a name="l00181"></a>00181 <span class="comment"></span>
|
||||||
|
<a name="l00182"></a>00182 <span class="comment"> /**</span>
|
||||||
|
<a name="l00183"></a>00183 <span class="comment"> * setMode is called when the audio mode changes. NORMAL mode is for</span>
|
||||||
|
<a name="l00184"></a>00184 <span class="comment"> * standard audio playback, RINGTONE when a ringtone is playing, and IN_CALL</span>
|
||||||
|
<a name="l00185"></a>00185 <span class="comment"> * when a call is in progress.</span>
|
||||||
|
<a name="l00186"></a>00186 <span class="comment"> */</span>
|
||||||
|
<a name="l00187"></a>00187 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#aaf2a429c240f00b21836794849b430f" title="setMode is called when the audio mode changes.">setMode</a>(<span class="keywordtype">int</span> mode) = 0;
|
||||||
|
<a name="l00188"></a>00188 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#8466c76328a51b8a83da103032abba55">getMode</a>(<span class="keywordtype">int</span>* mode) = 0;
|
||||||
|
<a name="l00189"></a>00189
|
||||||
|
<a name="l00190"></a>00190 <span class="comment">// mic mute</span>
|
||||||
|
<a name="l00191"></a>00191 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#be35b7cb738531939a3ac9abc5514621">setMicMute</a>(<span class="keywordtype">bool</span> state) = 0;
|
||||||
|
<a name="l00192"></a>00192 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#15d3c33d7e3f965dc2588c537f05a133">getMicMute</a>(<span class="keywordtype">bool</span>* state) = 0;
|
||||||
|
<a name="l00193"></a>00193
|
||||||
|
<a name="l00194"></a>00194 <span class="comment">// Temporary interface, do not use</span>
|
||||||
|
<a name="l00195"></a>00195 <span class="comment">// TODO: Replace with a more generic key:value get/set mechanism</span>
|
||||||
|
<a name="l00196"></a>00196 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#a1b477901df48b3a27103a77e6bb39c8">setParameter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keyword">const</span> <span class="keywordtype">char</span>* value) = 0;
|
||||||
|
<a name="l00197"></a>00197
|
||||||
|
<a name="l00198"></a>00198 <span class="comment">// Returns audio input buffer size according to parameters passed or 0 if one of the</span>
|
||||||
|
<a name="l00199"></a>00199 <span class="comment">// parameters is not supported</span>
|
||||||
|
<a name="l00200"></a>00200 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1_audio_hardware_interface.html#19f68d873b2a6e4c00c017c580170395">getInputBufferSize</a>(uint32_t sampleRate, <span class="keywordtype">int</span> format, <span class="keywordtype">int</span> channelCount) = 0;
|
||||||
|
<a name="l00201"></a>00201 <span class="comment"></span>
|
||||||
|
<a name="l00202"></a>00202 <span class="comment"> /** This method creates and opens the audio hardware output stream */</span>
|
||||||
|
<a name="l00203"></a>00203 <span class="keyword">virtual</span> <a class="code" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a>* <a class="code" href="classandroid_1_1_audio_hardware_interface.html#eda0986e145c8dd68d21cb79051f94f9" title="This method creates and opens the audio hardware output stream.">openOutputStream</a>(
|
||||||
|
<a name="l00204"></a>00204 <span class="keywordtype">int</span> format=0,
|
||||||
|
<a name="l00205"></a>00205 <span class="keywordtype">int</span> channelCount=0,
|
||||||
|
<a name="l00206"></a>00206 uint32_t sampleRate=0,
|
||||||
|
<a name="l00207"></a>00207 status_t *status=0) = 0;
|
||||||
|
<a name="l00208"></a>00208 <span class="comment"></span>
|
||||||
|
<a name="l00209"></a>00209 <span class="comment"> /** This method creates and opens the audio hardware input stream */</span>
|
||||||
|
<a name="l00210"></a>00210 <span class="keyword">virtual</span> <a class="code" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a>* <a class="code" href="classandroid_1_1_audio_hardware_interface.html#efb777d192fcbcd65458fa4f2d976476" title="This method creates and opens the audio hardware input stream.">openInputStream</a>(
|
||||||
|
<a name="l00211"></a>00211 <span class="keywordtype">int</span> format,
|
||||||
|
<a name="l00212"></a>00212 <span class="keywordtype">int</span> channelCount,
|
||||||
|
<a name="l00213"></a>00213 uint32_t sampleRate,
|
||||||
|
<a name="l00214"></a>00214 status_t *status) = 0;
|
||||||
|
<a name="l00215"></a>00215 <span class="comment"></span>
|
||||||
|
<a name="l00216"></a>00216 <span class="comment"> /**This method dumps the state of the audio hardware */</span>
|
||||||
|
<a name="l00217"></a>00217 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#05f035af60e67a22251175b44a089f69" title="This method dumps the state of the audio hardware.">dumpState</a>(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> Vector<String16>& args) = 0;
|
||||||
|
<a name="l00218"></a>00218
|
||||||
|
<a name="l00219"></a>00219 <span class="keyword">static</span> <a class="code" href="classandroid_1_1_audio_hardware_interface.html" title="AudioHardwareInterface.h defines the interface to the audio hardware abstraction...">AudioHardwareInterface</a>* <a class="code" href="classandroid_1_1_audio_hardware_interface.html#aa5ae45e9ad969fefc494e103cf5068d">create</a>();
|
||||||
|
<a name="l00220"></a>00220
|
||||||
|
<a name="l00221"></a>00221 <span class="keyword">protected</span>:<span class="comment"></span>
|
||||||
|
<a name="l00222"></a>00222 <span class="comment"> /**</span>
|
||||||
|
<a name="l00223"></a>00223 <span class="comment"> * doRouting actually initiates the routing. A call to setRouting</span>
|
||||||
|
<a name="l00224"></a>00224 <span class="comment"> * or setMode may result in a routing change. The generic logic calls</span>
|
||||||
|
<a name="l00225"></a>00225 <span class="comment"> * doRouting when required. If the device has any special requirements these</span>
|
||||||
|
<a name="l00226"></a>00226 <span class="comment"> * methods can be overriden.</span>
|
||||||
|
<a name="l00227"></a>00227 <span class="comment"> */</span>
|
||||||
|
<a name="l00228"></a>00228 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#d82c3e4827f275abf28eb872e8751e1f" title="doRouting actually initiates the routing.">doRouting</a>() = 0;
|
||||||
|
<a name="l00229"></a>00229
|
||||||
|
<a name="l00230"></a>00230 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_audio_hardware_interface.html#371f198a416cb726804e0f47e8763217">dump</a>(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> Vector<String16>& args) = 0;
|
||||||
|
<a name="l00231"></a>00231 };
|
||||||
|
<a name="l00232"></a>00232
|
||||||
|
<a name="l00233"></a>00233 <span class="comment">// ----------------------------------------------------------------------------</span>
|
||||||
|
<a name="l00234"></a>00234
|
||||||
|
<a name="l00235"></a>00235 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <a class="code" href="classandroid_1_1_audio_hardware_interface.html" title="AudioHardwareInterface.h defines the interface to the audio hardware abstraction...">AudioHardwareInterface</a>* <a class="code" href="namespaceandroid.html#dcc80314ddffcb0981a9e9c5468662f8">createAudioHardware</a>(<span class="keywordtype">void</span>);
|
||||||
|
<a name="l00236"></a>00236
|
||||||
|
<a name="l00237"></a>00237 }; <span class="comment">// namespace android</span>
|
||||||
|
<a name="l00238"></a>00238
|
||||||
|
<a name="l00239"></a>00239 <span class="preprocessor">#endif // ANDROID_AUDIO_HARDWARE_INTERFACE_H</span>
|
||||||
|
</pre></div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
51
pdk/docs/_audio_hardware_interface_8h.html
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>AudioHardwareInterface.h File Reference</h1>
|
||||||
|
<p>
|
||||||
|
<a href="_audio_hardware_interface_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html">android</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html">android::AudioStreamOut</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a> is the abstraction interface for the audio output hardware. <a href="classandroid_1_1_audio_stream_out.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html">android::AudioStreamIn</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a> is the abstraction interface for the audio input hardware. <a href="classandroid_1_1_audio_stream_in.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html">android::AudioHardwareInterface</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="_audio_hardware_interface_8h.html">AudioHardwareInterface.h</a> defines the interface to the audio hardware abstraction layer. <a href="classandroid_1_1_audio_hardware_interface.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">AudioHardwareInterface * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#dcc80314ddffcb0981a9e9c5468662f8">android::createAudioHardware</a> (void)</td></tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
179
pdk/docs/_camera_hardware_interface_8h-source.html
Executable file
@@ -0,0 +1,179 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1>CameraHardwareInterface.h</h1><a href="_camera_hardware_interface_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
|
||||||
|
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008 The Android Open Source Project</span>
|
||||||
|
<a name="l00003"></a>00003 <span class="comment"> *</span>
|
||||||
|
<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
|
||||||
|
<a name="l00007"></a>00007 <span class="comment"> *</span>
|
||||||
|
<a name="l00008"></a>00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
|
||||||
|
<a name="l00009"></a>00009 <span class="comment"> *</span>
|
||||||
|
<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
|
||||||
|
<a name="l00015"></a>00015 <span class="comment"> */</span>
|
||||||
|
<a name="l00016"></a>00016
|
||||||
|
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef ANDROID_HARDWARE_CAMERA_HARDWARE_INTERFACE_H</span>
|
||||||
|
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define ANDROID_HARDWARE_CAMERA_HARDWARE_INTERFACE_H</span>
|
||||||
|
<a name="l00019"></a>00019 <span class="preprocessor"></span>
|
||||||
|
<a name="l00020"></a>00020 <span class="preprocessor">#include <utils/IMemory.h></span>
|
||||||
|
<a name="l00021"></a>00021 <span class="preprocessor">#include <utils/RefBase.h></span>
|
||||||
|
<a name="l00022"></a>00022 <span class="preprocessor">#include <ui/CameraParameters.h></span>
|
||||||
|
<a name="l00023"></a>00023
|
||||||
|
<a name="l00024"></a>00024 <span class="keyword">namespace </span>android {
|
||||||
|
<a name="l00025"></a>00025 <span class="comment"></span>
|
||||||
|
<a name="l00026"></a>00026 <span class="comment">/** Callback for startPreview() */</span>
|
||||||
|
<a name="l00027"></a><a class="code" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636">00027</a> <span class="keyword">typedef</span> void (*<a class="code" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636" title="Callback for startPreview().">preview_callback</a>)(<span class="keyword">const</span> sp<IMemory>& mem, <span class="keywordtype">void</span>* user);
|
||||||
|
<a name="l00028"></a>00028 <span class="comment"></span>
|
||||||
|
<a name="l00029"></a>00029 <span class="comment">/** Callback for takePicture() */</span>
|
||||||
|
<a name="l00030"></a><a class="code" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65">00030</a> <span class="keyword">typedef</span> void (*<a class="code" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65" title="Callback for takePicture().">shutter_callback</a>)(<span class="keywordtype">void</span>* user);
|
||||||
|
<a name="l00031"></a>00031 <span class="comment"></span>
|
||||||
|
<a name="l00032"></a>00032 <span class="comment">/** Callback for takePicture() */</span>
|
||||||
|
<a name="l00033"></a><a class="code" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e">00033</a> <span class="keyword">typedef</span> void (*<a class="code" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e" title="Callback for takePicture().">raw_callback</a>)(<span class="keyword">const</span> sp<IMemory>& mem, <span class="keywordtype">void</span>* user);
|
||||||
|
<a name="l00034"></a>00034 <span class="comment"></span>
|
||||||
|
<a name="l00035"></a>00035 <span class="comment">/** Callback for takePicture() */</span>
|
||||||
|
<a name="l00036"></a><a class="code" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473">00036</a> <span class="keyword">typedef</span> void (*<a class="code" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473" title="Callback for takePicture().">jpeg_callback</a>)(<span class="keyword">const</span> sp<IMemory>& mem, <span class="keywordtype">void</span>* user);
|
||||||
|
<a name="l00037"></a>00037 <span class="comment"></span>
|
||||||
|
<a name="l00038"></a>00038 <span class="comment">/** Callback for autoFocus() */</span>
|
||||||
|
<a name="l00039"></a><a class="code" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2">00039</a> <span class="keyword">typedef</span> void (*<a class="code" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2" title="Callback for autoFocus().">autofocus_callback</a>)(<span class="keywordtype">bool</span> focused, <span class="keywordtype">void</span>* user);
|
||||||
|
<a name="l00040"></a>00040 <span class="comment"></span>
|
||||||
|
<a name="l00041"></a>00041 <span class="comment">/**</span>
|
||||||
|
<a name="l00042"></a>00042 <span class="comment"> * CameraHardwareInterface.h defines the interface to the</span>
|
||||||
|
<a name="l00043"></a>00043 <span class="comment"> * camera hardware abstraction layer, used for setting and getting</span>
|
||||||
|
<a name="l00044"></a>00044 <span class="comment"> * parameters, live previewing, and taking pictures.</span>
|
||||||
|
<a name="l00045"></a>00045 <span class="comment"> *</span>
|
||||||
|
<a name="l00046"></a>00046 <span class="comment"> * It is a referenced counted interface with RefBase as its base class.</span>
|
||||||
|
<a name="l00047"></a>00047 <span class="comment"> * CameraService calls openCameraHardware() to retrieve a strong pointer to the</span>
|
||||||
|
<a name="l00048"></a>00048 <span class="comment"> * instance of this interface and may be called multiple times. The</span>
|
||||||
|
<a name="l00049"></a>00049 <span class="comment"> * following steps describe a typical sequence:</span>
|
||||||
|
<a name="l00050"></a>00050 <span class="comment"> *</span>
|
||||||
|
<a name="l00051"></a>00051 <span class="comment"> * -# After CameraService calls openCameraHardware(), getParameters() and</span>
|
||||||
|
<a name="l00052"></a>00052 <span class="comment"> * setParameters() are used to initialize the camera instance.</span>
|
||||||
|
<a name="l00053"></a>00053 <span class="comment"> * CameraService calls getPreviewHeap() to establish access to the</span>
|
||||||
|
<a name="l00054"></a>00054 <span class="comment"> * preview heap so it can be registered with SurfaceFlinger for</span>
|
||||||
|
<a name="l00055"></a>00055 <span class="comment"> * efficient display updating while in preview mode.</span>
|
||||||
|
<a name="l00056"></a>00056 <span class="comment"> * -# startPreview() is called, which is passed a preview_callback()</span>
|
||||||
|
<a name="l00057"></a>00057 <span class="comment"> * function and a user parameter. The camera instance then periodically</span>
|
||||||
|
<a name="l00058"></a>00058 <span class="comment"> * calls preview_callback() each time a new preview frame is available.</span>
|
||||||
|
<a name="l00059"></a>00059 <span class="comment"> * The callback routine has two parameters: the first is a pointer to</span>
|
||||||
|
<a name="l00060"></a>00060 <span class="comment"> * the IMemory containing the frame and the second a user parameter. If</span>
|
||||||
|
<a name="l00061"></a>00061 <span class="comment"> * the preview_callback code needs to use this memory after returning,</span>
|
||||||
|
<a name="l00062"></a>00062 <span class="comment"> * it must copy the data.</span>
|
||||||
|
<a name="l00063"></a>00063 <span class="comment"> *</span>
|
||||||
|
<a name="l00064"></a>00064 <span class="comment"> * Prior to taking a picture, CameraService calls autofocus() with</span>
|
||||||
|
<a name="l00065"></a>00065 <span class="comment"> * autofocus_callback() and a user parameter. When auto focusing has</span>
|
||||||
|
<a name="l00066"></a>00066 <span class="comment"> * completed, the camera instance calls autofocus_callback(), which informs</span>
|
||||||
|
<a name="l00067"></a>00067 <span class="comment"> * the application whether focusing was successful. The camera instance</span>
|
||||||
|
<a name="l00068"></a>00068 <span class="comment"> * only calls autofocus_callback() once and it is up to the application to</span>
|
||||||
|
<a name="l00069"></a>00069 <span class="comment"> * call autoFocus() again if refocusing is desired.</span>
|
||||||
|
<a name="l00070"></a>00070 <span class="comment"> *</span>
|
||||||
|
<a name="l00071"></a>00071 <span class="comment"> * CameraService calls takePicture() to request the camera instance take a</span>
|
||||||
|
<a name="l00072"></a>00072 <span class="comment"> * picture. This method has two callbacks: raw_callback() and jpeg_callback().</span>
|
||||||
|
<a name="l00073"></a>00073 <span class="comment"> * When the raw image is available, raw_callback() is called with a pointer</span>
|
||||||
|
<a name="l00074"></a>00074 <span class="comment"> * to the IMemory containing the raw image. When the jpeg image is available,</span>
|
||||||
|
<a name="l00075"></a>00075 <span class="comment"> * jpeg_callback() is called with a pointer to the IMemory containing the</span>
|
||||||
|
<a name="l00076"></a>00076 <span class="comment"> * jpeg image. As with preview_callback(), the memory must be copied if it's</span>
|
||||||
|
<a name="l00077"></a>00077 <span class="comment"> * needed after returning.</span>
|
||||||
|
<a name="l00078"></a>00078 <span class="comment"> */</span>
|
||||||
|
<a name="l00079"></a><a class="code" href="classandroid_1_1_camera_hardware_interface.html">00079</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1_camera_hardware_interface.html" title="CameraHardwareInterface.h defines the interface to the camera hardware abstraction...">CameraHardwareInterface</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> RefBase {
|
||||||
|
<a name="l00080"></a>00080 <span class="keyword">public</span>:
|
||||||
|
<a name="l00081"></a><a class="code" href="classandroid_1_1_camera_hardware_interface.html#99f4ab74b58cd4b23e0fb00a46a60cb1">00081</a> <span class="keyword">virtual</span> <a class="code" href="classandroid_1_1_camera_hardware_interface.html#99f4ab74b58cd4b23e0fb00a46a60cb1">~CameraHardwareInterface</a>() { }
|
||||||
|
<a name="l00082"></a>00082 <span class="comment"></span>
|
||||||
|
<a name="l00083"></a>00083 <span class="comment"> /** Return the IMemoryHeap for the preview image heap */</span>
|
||||||
|
<a name="l00084"></a>00084 <span class="keyword">virtual</span> sp<IMemoryHeap> <a class="code" href="classandroid_1_1_camera_hardware_interface.html#9d4071fb234a0c2e7bf6ea78e723f2f4" title="Return the IMemoryHeap for the preview image heap.">getPreviewHeap</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00085"></a>00085 <span class="comment"></span>
|
||||||
|
<a name="l00086"></a>00086 <span class="comment"> /**</span>
|
||||||
|
<a name="l00087"></a>00087 <span class="comment"> * Start preview mode. When a preview image is available</span>
|
||||||
|
<a name="l00088"></a>00088 <span class="comment"> * preview_callback is called with the user parameter. The</span>
|
||||||
|
<a name="l00089"></a>00089 <span class="comment"> * call back parameter may be null.</span>
|
||||||
|
<a name="l00090"></a>00090 <span class="comment"> */</span>
|
||||||
|
<a name="l00091"></a>00091 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#62def8031dee8bdab7933770708a6312" title="Start preview mode.">startPreview</a>(<a class="code" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636" title="Callback for startPreview().">preview_callback</a> cb, <span class="keywordtype">void</span>* user) = 0;
|
||||||
|
<a name="l00092"></a>00092 <span class="comment"></span>
|
||||||
|
<a name="l00093"></a>00093 <span class="comment"> /**</span>
|
||||||
|
<a name="l00094"></a>00094 <span class="comment"> * Stop a previously started preview.</span>
|
||||||
|
<a name="l00095"></a>00095 <span class="comment"> */</span>
|
||||||
|
<a name="l00096"></a>00096 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1_camera_hardware_interface.html#34faa77065f415b93cb1acf84fc788bf" title="Stop a previously started preview.">stopPreview</a>() = 0;
|
||||||
|
<a name="l00097"></a>00097 <span class="comment"></span>
|
||||||
|
<a name="l00098"></a>00098 <span class="comment"> /**</span>
|
||||||
|
<a name="l00099"></a>00099 <span class="comment"> * Start auto focus, the callback routine is called</span>
|
||||||
|
<a name="l00100"></a>00100 <span class="comment"> * once when focusing is complete. autoFocus() will</span>
|
||||||
|
<a name="l00101"></a>00101 <span class="comment"> * be called again if another auto focus is needed.</span>
|
||||||
|
<a name="l00102"></a>00102 <span class="comment"> */</span>
|
||||||
|
<a name="l00103"></a>00103 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515" title="Start auto focus, the callback routine is called once when focusing is complete.">autoFocus</a>(<a class="code" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2" title="Callback for autoFocus().">autofocus_callback</a>,
|
||||||
|
<a name="l00104"></a>00104 <span class="keywordtype">void</span>* user) = 0;
|
||||||
|
<a name="l00105"></a>00105 <span class="comment"></span>
|
||||||
|
<a name="l00106"></a>00106 <span class="comment"> /**</span>
|
||||||
|
<a name="l00107"></a>00107 <span class="comment"> * Take a picture. The raw_callback is called when</span>
|
||||||
|
<a name="l00108"></a>00108 <span class="comment"> * the uncompressed image is available. The jpeg_callback</span>
|
||||||
|
<a name="l00109"></a>00109 <span class="comment"> * is called when the compressed image is available. These</span>
|
||||||
|
<a name="l00110"></a>00110 <span class="comment"> * call backs may be null. The user parameter is passed</span>
|
||||||
|
<a name="l00111"></a>00111 <span class="comment"> * to each of the call back routines.</span>
|
||||||
|
<a name="l00112"></a>00112 <span class="comment"> */</span>
|
||||||
|
<a name="l00113"></a>00113 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#2aedf65cad695ce439029f37a7cb66c4" title="Take a picture.">takePicture</a>(<a class="code" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65" title="Callback for takePicture().">shutter_callback</a>,
|
||||||
|
<a name="l00114"></a>00114 <a class="code" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e" title="Callback for takePicture().">raw_callback</a>,
|
||||||
|
<a name="l00115"></a>00115 <a class="code" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473" title="Callback for takePicture().">jpeg_callback</a>,
|
||||||
|
<a name="l00116"></a>00116 <span class="keywordtype">void</span>* user) = 0;
|
||||||
|
<a name="l00117"></a>00117 <span class="comment"></span>
|
||||||
|
<a name="l00118"></a>00118 <span class="comment"> /**</span>
|
||||||
|
<a name="l00119"></a>00119 <span class="comment"> * Cancel a picture that was started with takePicture. You may cancel any</span>
|
||||||
|
<a name="l00120"></a>00120 <span class="comment"> * of the shutter, raw, or jpeg callbacks. Calling this method when no</span>
|
||||||
|
<a name="l00121"></a>00121 <span class="comment"> * picture is being taken is a no-op.</span>
|
||||||
|
<a name="l00122"></a>00122 <span class="comment"> */</span>
|
||||||
|
<a name="l00123"></a>00123 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#da8faf376215a605357d26afa1b79386" title="Cancel a picture that was started with takePicture.">cancelPicture</a>(<span class="keywordtype">bool</span> cancel_shutter,
|
||||||
|
<a name="l00124"></a>00124 <span class="keywordtype">bool</span> cancel_raw,
|
||||||
|
<a name="l00125"></a>00125 <span class="keywordtype">bool</span> cancel_jpeg) = 0;
|
||||||
|
<a name="l00126"></a>00126 <span class="comment"></span>
|
||||||
|
<a name="l00127"></a>00127 <span class="comment"> /** Set the camera parameters. */</span>
|
||||||
|
<a name="l00128"></a>00128 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#82e54ede14bd263274bbc8777bafc384" title="Set the camera parameters.">setParameters</a>(<span class="keyword">const</span> CameraParameters& params) = 0;
|
||||||
|
<a name="l00129"></a>00129 <span class="comment"></span>
|
||||||
|
<a name="l00130"></a>00130 <span class="comment"> /** Return the camera parameters. */</span>
|
||||||
|
<a name="l00131"></a>00131 <span class="keyword">virtual</span> CameraParameters <a class="code" href="classandroid_1_1_camera_hardware_interface.html#4c748a3c0aa3c5f2333e0abcdbeb15cb" title="Return the camera parameters.">getParameters</a>() <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00132"></a>00132 <span class="comment"></span>
|
||||||
|
<a name="l00133"></a>00133 <span class="comment"> /**</span>
|
||||||
|
<a name="l00134"></a>00134 <span class="comment"> * Release the hardware resources owned by this object. Note that this is</span>
|
||||||
|
<a name="l00135"></a>00135 <span class="comment"> * *not* done in the destructor.</span>
|
||||||
|
<a name="l00136"></a>00136 <span class="comment"> */</span>
|
||||||
|
<a name="l00137"></a>00137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1_camera_hardware_interface.html#df65310b8aa176e0ce5f08b87d6b7eb8" title="Release the hardware resources owned by this object.">release</a>() = 0;
|
||||||
|
<a name="l00138"></a>00138 <span class="comment"></span>
|
||||||
|
<a name="l00139"></a>00139 <span class="comment"> /**</span>
|
||||||
|
<a name="l00140"></a>00140 <span class="comment"> * Dump state of the camera hardware</span>
|
||||||
|
<a name="l00141"></a>00141 <span class="comment"> */</span>
|
||||||
|
<a name="l00142"></a>00142 <span class="keyword">virtual</span> status_t <a class="code" href="classandroid_1_1_camera_hardware_interface.html#06df1bf91b8af07964dca314a6031b32" title="Dump state of the camera hardware.">dump</a>(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> Vector<String16>& args) <span class="keyword">const</span> = 0;
|
||||||
|
<a name="l00143"></a>00143 };
|
||||||
|
<a name="l00144"></a>00144 <span class="comment"></span>
|
||||||
|
<a name="l00145"></a>00145 <span class="comment">/** factory function to instantiate a camera hardware object */</span>
|
||||||
|
<a name="l00146"></a>00146 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> sp<CameraHardwareInterface> <a class="code" href="namespaceandroid.html#24c243f7f9ba0d1d881be17ae06254a2" title="factory function to instantiate a camera hardware object">openCameraHardware</a>();
|
||||||
|
<a name="l00147"></a>00147
|
||||||
|
<a name="l00148"></a>00148 }; <span class="comment">// namespace android</span>
|
||||||
|
<a name="l00149"></a>00149
|
||||||
|
<a name="l00150"></a>00150 <span class="preprocessor">#endif</span>
|
||||||
|
</pre></div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
62
pdk/docs/_camera_hardware_interface_8h.html
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>CameraHardwareInterface.h File Reference</h1>
|
||||||
|
<p>
|
||||||
|
<a href="_camera_hardware_interface_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html">android</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html">android::CameraHardwareInterface</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="_camera_hardware_interface_8h.html">CameraHardwareInterface.h</a> defines the interface to the camera hardware abstraction layer, used for setting and getting parameters, live previewing, and taking pictures. <a href="classandroid_1_1_camera_hardware_interface.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636">android::preview_callback</a> )(const sp< IMemory > &mem, void *user)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback for startPreview(). <a href="#d32b08663d42356404e2eb971e271636"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65">android::shutter_callback</a> )(void *user)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback for takePicture(). <a href="#04c83209c2627e2d303320712ca9ee65"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e">android::raw_callback</a> )(const sp< IMemory > &mem, void *user)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback for takePicture(). <a href="#a97926709e452d66360cb9b24736969e"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473">android::jpeg_callback</a> )(const sp< IMemory > &mem, void *user)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback for takePicture(). <a href="#c21980d4be1e0cc458399ecf5374d473"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2">android::autofocus_callback</a> )(bool focused, void *user)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback for autoFocus(). <a href="#4dca8d8b824ca9a684358133da0ec8f2"></a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">sp< CameraHardwareInterface > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceandroid.html#24c243f7f9ba0d1d881be17ae06254a2">android::openCameraHardware</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">factory function to instantiate a camera hardware object <a href="#24c243f7f9ba0d1d881be17ae06254a2"></a><br></td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
pdk/docs/androidBluetooth.gif
Executable file
|
After Width: | Height: | Size: 21 KiB |
BIN
pdk/docs/androidBluetoothProcessDiagram.jpg
Executable file
|
After Width: | Height: | Size: 175 KiB |
BIN
pdk/docs/androidCameraArchitecture.gif
Executable file
|
After Width: | Height: | Size: 34 KiB |
51
pdk/docs/annotated.html
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="classandroid_1_1_audio_hardware_interface.html">android::AudioHardwareInterface</a></td><td class="indexvalue"><a class="el" href="_audio_hardware_interface_8h.html">AudioHardwareInterface.h</a> defines the interface to the audio hardware abstraction layer </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="classandroid_1_1_audio_stream_in.html">android::AudioStreamIn</a></td><td class="indexvalue"><a class="el" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a> is the abstraction interface for the audio input hardware </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="classandroid_1_1_audio_stream_out.html">android::AudioStreamOut</a></td><td class="indexvalue"><a class="el" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a> is the abstraction interface for the audio output hardware </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="classandroid_1_1_camera_hardware_interface.html">android::CameraHardwareInterface</a></td><td class="indexvalue"><a class="el" href="_camera_hardware_interface_8h.html">CameraHardwareInterface.h</a> defines the interface to the camera hardware abstraction layer, used for setting and getting parameters, live previewing, and taking pictures </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_callbacks.html">GpsCallbacks</a></td><td class="indexvalue">GPS callback structure </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_interface.html">GpsInterface</a></td><td class="indexvalue">Represents the standard GPS interface </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_location.html">GpsLocation</a></td><td class="indexvalue">Represents a location </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_status.html">GpsStatus</a></td><td class="indexvalue">Represents the status </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_supl_interface.html">GpsSuplInterface</a></td><td class="indexvalue">Extended interface for SUPL support </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_sv_info.html">GpsSvInfo</a></td><td class="indexvalue">Represents SV information </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_sv_status.html">GpsSvStatus</a></td><td class="indexvalue">Represents SV status </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_xtra_callbacks.html">GpsXtraCallbacks</a></td><td class="indexvalue">Callback structure for the XTRA interface </td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="struct_gps_xtra_interface.html">GpsXtraInterface</a></td><td class="indexvalue">Extended interface for XTRA support </td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Audio Subsystem</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20audio_sub_system.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20audio_sub_system.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -142,78 +172,64 @@ h1,h2,h3 {
|
|||||||
<div class="jd-descr">
|
<div class="jd-descr">
|
||||||
|
|
||||||
|
|
||||||
<a name="androidAudioSubSystemTitle"></a><h1>Audio Subsystem</h1>
|
<a name="androidAudioSubSystemTitle"></a><h1>Audio</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="toc"/>
|
<a name="toc"/>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
<a href="#androidAudioSubSystemIntroduction">Introduction</a><br/>
|
<a href="#androidAudioSubSystemIntroduction">Introduction</a><br/>
|
||||||
<a href="#androidAudioSubSystemPorting">Porting Android to other Audio Stacks</a><br/><div style="padding-left:40px">
|
<a href="#androidAudioBuildingDriver">Building an Audio Library</a><br/>
|
||||||
|
<a href="#androidAudioInterface">Interface</a><br/></div></font></div>
|
||||||
<a href="#androidAudioSubSystemAbstract">AudioHardwareInterface Abstract Class</a><br/>
|
|
||||||
<a href="#androidAudioSubSystemAudioHardwareInterfaceModification">Modifying AudioHardwareInterface</a><br/></div></div></font></div>
|
|
||||||
|
|
||||||
<a name="androidAudioSubSystemIntroduction"></a><h2>Introduction</h2>
|
<a name="androidAudioSubSystemIntroduction"></a><h2>Introduction</h2>
|
||||||
|
|
||||||
<p>Android provides two native layers that handle audio software:</p>
|
<p>AudioHardwareInterface serves as the glue between proprietary audio drivers and the Android AudioFlinger service, the core audio service that handles all audio-related requests from applications.</p>
|
||||||
<p><ul><li><b>Audio Flinger</b>: the audio software implementation that provides the minimum required audio functions (as illustrated in the diagram below).</li>
|
|
||||||
<li><b>AudioHardwareInterface</b>: the hardware abstraction layer that hides driver-specific audio implementations from the Android platform.</li>
|
|
||||||
</ul>
|
|
||||||
</p>
|
|
||||||
<p><img src="android_audio_architecture.gif"></p>
|
<p><img src="android_audio_architecture.gif"></p>
|
||||||
|
|
||||||
Solid elements represent Android blocks and dashed elements represent partner-specific proprietary blocks.
|
Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="androidAudioSubSystemPorting"></a><h2>Porting Android to other Audio Stacks</h2>
|
<a name="androidAudioBuildingDriver"></a><h2>Building an Audio Library</h2>
|
||||||
|
|
||||||
<p>Porting Android to other audio stacks (OSS, ALSA, proprietary user-space audio libraries, etc.) requires inheriting from and modifying <code>AudioHardwareInterface</code> to support the driver-specific implementation.</p>
|
<p>To implement an audio driver, create a shared library that implements the interface defined in <code>AudioHardwareInterface.h</code>. You must name your shared library <code>libaudio.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. Place libaudio sources and <code>Android.mk</code> in <code>partner/acme/chipset_or_board/libaudio/</code>.</p>
|
||||||
|
<p>The following stub <code>Android.mk</code> file ensures that <code>libaudio</code> compiles and links to the appropriate libraries:</p>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidAudioSubSystemAbstract"></a><h3>AudioHardwareInterface Abstract Class</h3>
|
|
||||||
|
|
||||||
<p><code>AudioHardwareInterface</code> (<code>//device/servers/audio/flinger</code>) contains several pure virtual functions that the audio driver class being ported needs to implement.</p>
|
|
||||||
|
|
||||||
|
|
||||||
<a name="androidAudioSubSystemAudioHardwareInterfaceModification"></a><h3>Modifying AudioHardwareInterface</h3>
|
|
||||||
|
|
||||||
<p>Once the audio driver that inherits <code>AudioHardwareInterface</code> is ready, modify the static function <code>AudioHardwareInterface::create()</code> in order to link/load the driver in Android.</p>
|
|
||||||
|
|
||||||
|
|
||||||
<p>Assume the manufacturer audio driver inherits from <code>AudioHarddwareInterface</code> and that it is compiled into a native shared library (<code>libaudio.so</code>). In this case, use <code>dlopen</code> to load the library.</p>
|
|
||||||
<p>You can find an example of a similar implementation in <code>//device/libs/media/mediaplayer.cpp</code>. (Note that the example below uses <code>libpv.so</code> because this is a real code snippet from <code>mediaplayer.cpp</code>. If your native shared library is called <code>libaudio.so</code>, replace <code>libpv.so</code> with your <code>libaudio.so</code>.)
|
|
||||||
<pre box="prettify">
|
|
||||||
// load PV library and create PV player
|
|
||||||
mLibHandle = dlopen("libpv.so", RTLD_NOW);
|
|
||||||
if (!mLibHandle) {
|
|
||||||
LOGE("dlopen failed on libpv.so\n");
|
|
||||||
return UNKNOWN_ERROR;
|
|
||||||
}
|
|
||||||
createPlayer_f createPlayer = reinterpret_cast<createPlayer_f>(dlsym(mLibHandle, "createPlayer"));
|
|
||||||
if (!createPlayer) {
|
|
||||||
LOGE("dlsym failed on createPlayer in libpv.so\n");
|
|
||||||
return UNKNOWN_ERROR;
|
|
||||||
}
|
|
||||||
</pre>
|
|
||||||
<p>Load the libraries with a call from <code>AudioHardwareInterface::create()</code>, as illustrated below (full code found in <code>//device/servers/audioflinger</code>).</p>
|
|
||||||
<pre class="prettify">
|
<pre class="prettify">
|
||||||
if (property_get("ro.kernel.qemu", value, 0)) {
|
LOCAL_PATH := $(call my-dir)
|
||||||
LOGD("Running in emulation - using generic audio driver");
|
include $(CLEAR_VARS)
|
||||||
hw = new AudioHardwareGeneric();
|
|
||||||
}
|
LOCAL_MODULE := libaudio
|
||||||
else {
|
|
||||||
// Insert calling of dynamic loading of driver here...
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
}
|
libcutils \
|
||||||
if (hw->initCheck() != NO_ERROR) {
|
libutils \
|
||||||
LOGW("Using stubbed audio hardware. No sound will be produced.");
|
libmedia \
|
||||||
delete hw;
|
libhardware
|
||||||
hw = new AudioHardwareStub();
|
|
||||||
}
|
LOCAL_SRC_FILES += MyAudioHardware.cpp
|
||||||
|
|
||||||
|
LOCAL_CFLAGS +=
|
||||||
|
|
||||||
|
LOCAL_C_INCLUDES +=
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += libaudiointerface
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidAudioInterface"></a><h2>Interface</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="audio_sub_system.html">click here</a>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<iframe onLoad="resizeHeight();" src="_audio_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
|
||||||
|
|
||||||
|
|
||||||
<p><span class="lh2"><a name="androidFooter"></a></span>
|
<p><span class="lh2"><a name="androidFooter"></a></span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -239,7 +255,7 @@ if (hw->initCheck() != NO_ERROR) {
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
276
pdk/docs/bluetooth.html
Executable file
@@ -0,0 +1,276 @@
|
|||||||
|
|
||||||
|
<p><span class="lh2"><a name="androidHeader"></a></span>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
|
<title>Android - Porting Guide</title>
|
||||||
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
|
||||||
|
<script src="http://code.google.com/android/assets/search_autocomplete.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" />
|
||||||
|
<script>
|
||||||
|
jQuery(document).ready(function() {
|
||||||
|
jQuery("pre").addClass("prettyprint");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
h1,h2,h3 {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body class="gc-documentation">
|
||||||
|
<div id="gc-container">
|
||||||
|
<a name="top"></a>
|
||||||
|
<div id="skipto"> </div>
|
||||||
|
<div id="langpref">
|
||||||
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="gc-header">
|
||||||
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
|
<div id="search" style="inline">
|
||||||
|
<div id="searchForm" class="searchForm" style="height: 44px;">
|
||||||
|
<!--previously form was here-->
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm -->
|
||||||
|
<noscript>
|
||||||
|
<style type="text/css">
|
||||||
|
.searchForm {
|
||||||
|
display : none !important;
|
||||||
|
}
|
||||||
|
.searchForm2 {
|
||||||
|
display : inline !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
|
<input type="hidden" name="cof" value="FORID:0" />
|
||||||
|
<input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/>
|
||||||
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
|
<br/>
|
||||||
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm2 -->
|
||||||
|
</div>
|
||||||
|
<!-- end search -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-header -->
|
||||||
|
<div id="searchControl" class="search-control"></div>
|
||||||
|
<!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]-->
|
||||||
|
<div id="codesiteContent">
|
||||||
|
<a name="gc-topnav-anchor"></a>
|
||||||
|
<div id="gc-topnav">
|
||||||
|
|
||||||
|
<h1>Android Platform Development Kit</h1>
|
||||||
|
<ul class="gc-topnav-tabs">
|
||||||
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20bluetooth.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-topnav -->
|
||||||
|
<div class="g-section g-tpl-180">
|
||||||
|
<a name="gc-toc"></a>
|
||||||
|
<div class="g-unit g-first" id="gc-toc">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
|
<ul>
|
||||||
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
|
<li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
|
||||||
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Multimedia</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Telephony</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Testing</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<a name="gc-pagecontent"></a>
|
||||||
|
<div class="g-unit" id="gc-pagecontent">
|
||||||
|
<div id="jd-content">
|
||||||
|
<div class="jd-descr">
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidBluetoothTitle"></a><h1>Bluetooth</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="toc"/>
|
||||||
|
<div style="padding:10px">
|
||||||
|
<a href="#androidBluetoothIntro">Introduction</a><br/>
|
||||||
|
<a href="#androidBluetoothPorting">Porting</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
|
<a href="#androidBluetoothPortingDriver">UART Driver</a><br/>
|
||||||
|
<a href="#androidBluetoothPortingPowerOnOff">Bluetooth Power On / Off</a><br/></div>
|
||||||
|
<a href="#androidBluetoothTools">Tools</a><br/></div></font></div>
|
||||||
|
|
||||||
|
<a name="androidBluetoothIntro"></a><h2>Introduction</h2>
|
||||||
|
|
||||||
|
<p>Android's Bluetooth stack uses BlueZ version 3.36 for GAP, SDP, and RFCOMM profiles, and is a SIG-qualified Bluetooth 2.0 host stack.</p>
|
||||||
|
|
||||||
|
<p>Bluez is GPL licensed, so the Android framework interacts with userspace bluez code through D-BUS IPC to avoid proprietary code.</p>
|
||||||
|
|
||||||
|
<p>Headset and Handsfree (v1.5) profiles are implemented in the Android framework and are both tightly coupled with the Phone App. These profiles are also SIG qualified.</p>
|
||||||
|
|
||||||
|
<p>The diagram below offers a library-oriented view of the Bluetooth stack. Click <a href="bluetooth_process.html">Bluetooth Process Diagram</a> for a process-oriented view.</p>
|
||||||
|
|
||||||
|
<p><img src="androidBluetooth.gif"></p>
|
||||||
|
|
||||||
|
Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidBluetoothPorting"></a><h2>Porting</h2>
|
||||||
|
|
||||||
|
<p>BlueZ is Bluetooth 2.0 compatible and should work with any 2.0 chipset. There are two integration points:</p>
|
||||||
|
<p><ul>
|
||||||
|
<li>UART driver</li>
|
||||||
|
<li>Bluetooth Power On / Off</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidBluetoothPortingDriver"></a><h3>UART Driver</h3>
|
||||||
|
|
||||||
|
<p>The BlueZ kernel sub-system attaches to your hardware-specific UART driver using the <code>hciattach</code> daemon.</p>
|
||||||
|
<p>For example, for MSM7201A, this is <code>drivers/serial/msm_serial.c</code>. You may also need to edit command line options to <code>hciattach</code> via <code>init.rc</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidBluetoothPortingPowerOnOff"></a><h3>Bluetooth Power On / Off</h3>
|
||||||
|
|
||||||
|
<p>The method for powering on and off your bluetooth chip varies from Android V 1.0 to post 1.0.</p>
|
||||||
|
|
||||||
|
<p><ul>
|
||||||
|
<li><b>1.0</b>: Android framework writes a 0 or 1 to <code>/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on</code>.</li>
|
||||||
|
|
||||||
|
<li><b>Post 1.0</b>: Android framework uses the linux <code>rfkill</code> API. See <code>arch/arm/mach-msm/board-trout-rfkill.c</code> for an example.</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidBluetoothTools"></a><h2>Tools</h2>
|
||||||
|
|
||||||
|
<p>BlueZ provides a rich set of command line tools for debugging and interacting with the Bluetooth sub-system, including:</p>
|
||||||
|
<p><ul>
|
||||||
|
<li><code>hciconfig</code></li>
|
||||||
|
<li><code>hcitool</code></li>
|
||||||
|
<li><code>hcidump</code></li>
|
||||||
|
<li><code>sdptool</code></li>
|
||||||
|
<li><code>dbus-send</code></li>
|
||||||
|
<li><code>dbus-monitor</code></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p><span class="lh2"><a name="androidFooter"></a></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-pagecontent -->
|
||||||
|
</div>
|
||||||
|
<!-- end gooey wrapper -->
|
||||||
|
</div>
|
||||||
|
<!-- end codesearchresults -->
|
||||||
|
<div id="gc-footer" dir="ltr">
|
||||||
|
<div class="text"> ©2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-footer -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-containter -->
|
||||||
|
<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
try {
|
||||||
|
var pageTracker = _gat._getTracker("UA-18071-1");
|
||||||
|
pageTracker._setAllowAnchor(true);
|
||||||
|
pageTracker._initData();
|
||||||
|
pageTracker._trackPageview();
|
||||||
|
} catch(e) {}
|
||||||
|
</script>
|
||||||
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
|
</div></div></div></body>
|
||||||
|
</html>
|
||||||
|
|
||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Bring Up</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20bring_up.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20bring_up.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -172,7 +202,6 @@ CONFIG_ANDROID_BINDER_IPC=y
|
|||||||
</ul>
|
</ul>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<h3>4. Burn Images to Flash</h3>
|
<h3>4. Burn Images to Flash</h3>
|
||||||
<p>### NEED HELP FINISHING THIS SECTION. KERNEL AND RAMDISK DON'T BELONG IN THIS LIST. </p>
|
|
||||||
<p>An image represents the state of a system or part of a system stored in non-volatile memory. The build process should produce the following system images:</p>
|
<p>An image represents the state of a system or part of a system stored in non-volatile memory. The build process should produce the following system images:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>bootloader</strong>: The bootloader is a small program responsible for initiating loading of the operating system. </li>
|
<li><strong>bootloader</strong>: The bootloader is a small program responsible for initiating loading of the operating system. </li>
|
||||||
@@ -526,7 +555,7 @@ service akmd /sbin/akmd
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Building Android for a new Mobile Device</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20build_new_device.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20build_new_device.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -297,7 +327,7 @@ h1,h2,h3 {
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Build System</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20build_system.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20build_system.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -422,7 +452,7 @@ Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode, sharing)
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
280
pdk/docs/camera.html
Executable file
@@ -0,0 +1,280 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
|
<title>Android - Porting Guide</title>
|
||||||
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
|
||||||
|
<script src="http://code.google.com/android/assets/search_autocomplete.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" />
|
||||||
|
<script>
|
||||||
|
jQuery(document).ready(function() {
|
||||||
|
jQuery("pre").addClass("prettyprint");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
h1,h2,h3 {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body class="gc-documentation">
|
||||||
|
<div id="gc-container">
|
||||||
|
<a name="top"></a>
|
||||||
|
<div id="skipto"> </div>
|
||||||
|
<div id="langpref">
|
||||||
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="gc-header">
|
||||||
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
|
<div id="search" style="inline">
|
||||||
|
<div id="searchForm" class="searchForm" style="height: 44px;">
|
||||||
|
<!--previously form was here-->
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm -->
|
||||||
|
<noscript>
|
||||||
|
<style type="text/css">
|
||||||
|
.searchForm {
|
||||||
|
display : none !important;
|
||||||
|
}
|
||||||
|
.searchForm2 {
|
||||||
|
display : inline !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
|
<input type="hidden" name="cof" value="FORID:0" />
|
||||||
|
<input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/>
|
||||||
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
|
<br/>
|
||||||
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm2 -->
|
||||||
|
</div>
|
||||||
|
<!-- end search -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-header -->
|
||||||
|
<div id="searchControl" class="search-control"></div>
|
||||||
|
<!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]-->
|
||||||
|
<div id="codesiteContent">
|
||||||
|
<a name="gc-topnav-anchor"></a>
|
||||||
|
<div id="gc-topnav">
|
||||||
|
|
||||||
|
<h1>Android Platform Development Kit</h1>
|
||||||
|
<ul class="gc-topnav-tabs">
|
||||||
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20camera.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-topnav -->
|
||||||
|
<div class="g-section g-tpl-180">
|
||||||
|
<a name="gc-toc"></a>
|
||||||
|
<div class="g-unit g-first" id="gc-toc">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
|
<ul>
|
||||||
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
|
<li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
|
||||||
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Multimedia</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Telephony</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Testing</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<a name="gc-pagecontent"></a>
|
||||||
|
<div class="g-unit" id="gc-pagecontent">
|
||||||
|
<div id="jd-content">
|
||||||
|
<div class="jd-descr">
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraTitle"></a><h1>Camera Subsystem</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="toc"/>
|
||||||
|
<div style="padding:10px">
|
||||||
|
<a href="#androidCameraIntroduction">Introduction</a><br/>
|
||||||
|
<a href="#androidCameraBuildingDriver">Building a Camera Library</a><br/>
|
||||||
|
<a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
|
<a href="#androidCameraSequenceDiagramsPreview">Preview</a><br/>
|
||||||
|
<a href="#androidCameraSequenceDiagramsTakePic">Taking a Picture</a><br/></div>
|
||||||
|
<a href="#androidCameraInterfaceIntro">Interface</a><br/></div></font></div>
|
||||||
|
|
||||||
|
<a name="androidCameraIntroduction"></a><h2>Introduction</h2>
|
||||||
|
|
||||||
|
<p>Android's camera subsystem connects the camera application to the application framework and user space libraries, which in turn communicate with the camera hardware layer that operates the physical camera.</p>
|
||||||
|
<p>The diagram below illustrates the structure of the camera subsystem.</p>
|
||||||
|
<p><img src="androidCameraArchitecture.gif"></p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraBuildingDriver"></a><h2>Building a Camera Library</h2>
|
||||||
|
|
||||||
|
<p>To implement a camera driver, create a shared library that implements the interface defined in <code>CameraHardwareInterface.h</code>. You must name your shared library <code>libcamera.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. Place libcamera sources and <code>Android.mk</code> in <code>partner/acme/chipset_or_board/libcamera/</code>.</p>
|
||||||
|
<p>The following stub <code>Android.mk</code> file ensures that <code>libcamera</code> compiles and links to the appropriate libraries:</p>
|
||||||
|
<pre class="prettify">
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := libcamera
|
||||||
|
|
||||||
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
|
libutils \
|
||||||
|
librpc \
|
||||||
|
liblog
|
||||||
|
|
||||||
|
LOCAL_SRC_FILES += MyCameraHardware.cpp
|
||||||
|
|
||||||
|
LOCAL_CFLAGS +=
|
||||||
|
|
||||||
|
LOCAL_C_INCLUDES +=
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES += \
|
||||||
|
libcamera-common \
|
||||||
|
libclock-rpc \
|
||||||
|
libcommondefs-rpc
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraSequenceDiagrams"></a><h2>Sequence Diagrams</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraSequenceDiagramsPreview"></a><h3>Preview</h3>
|
||||||
|
|
||||||
|
<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.</p>
|
||||||
|
<img src="cameraPreview.jpg">
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraSequenceDiagramsTakePic"></a><h3>Taking a Picture</h3>
|
||||||
|
|
||||||
|
<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.</p>
|
||||||
|
<img src="cameraTakePicture.jpg">
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidCameraInterfaceIntro"></a><h2>Interface</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="camera.html">click here</a>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<iframe onLoad="resizeHeight();" src="_camera_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
|
||||||
|
|
||||||
|
|
||||||
|
<p><span class="lh2"><a name="androidFooter"></a></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-pagecontent -->
|
||||||
|
</div>
|
||||||
|
<!-- end gooey wrapper -->
|
||||||
|
</div>
|
||||||
|
<!-- end codesearchresults -->
|
||||||
|
<div id="gc-footer" dir="ltr">
|
||||||
|
<div class="text"> ©2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-footer -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-containter -->
|
||||||
|
<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
try {
|
||||||
|
var pageTracker = _gat._getTracker("UA-18071-1");
|
||||||
|
pageTracker._setAllowAnchor(true);
|
||||||
|
pageTracker._initData();
|
||||||
|
pageTracker._trackPageview();
|
||||||
|
} catch(e) {}
|
||||||
|
</script>
|
||||||
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
|
</div></div></div></body>
|
||||||
|
</html>
|
||||||
|
|
||||||
BIN
pdk/docs/cameraPreview.jpg
Executable file
|
After Width: | Height: | Size: 150 KiB |
BIN
pdk/docs/cameraTakePicture.jpg
Executable file
|
After Width: | Height: | Size: 165 KiB |
584
pdk/docs/classandroid_1_1_audio_hardware_interface.html
Executable file
@@ -0,0 +1,584 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="navpath"><a class="el" href="namespaceandroid.html">android</a>::<a class="el" href="classandroid_1_1_audio_hardware_interface.html">AudioHardwareInterface</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>android::AudioHardwareInterface Class Reference</h1><!-- doxytag: class="android::AudioHardwareInterface" --><a class="el" href="_audio_hardware_interface_8h.html">AudioHardwareInterface.h</a> defines the interface to the audio hardware abstraction layer.
|
||||||
|
<a href="#_details">More...</a>
|
||||||
|
<p>
|
||||||
|
<code>#include <<a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>></code>
|
||||||
|
<p>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#b7e19e09fa6cbc07c127122fa9866c50">initCheck</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">check to see if the audio hardware interface has been initialized. <a href="#b7e19e09fa6cbc07c127122fa9866c50"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#61121d365bb4d182bdec2c1b12fb1178">standby</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">put the audio hardware into standby mode to conserve power. <a href="#61121d365bb4d182bdec2c1b12fb1178"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#7b7418072df1eeaacc89cd0c725755f6">setVoiceVolume</a> (float volume)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">set the audio volume of a voice call. <a href="#7b7418072df1eeaacc89cd0c725755f6"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#925092e556eb89f304bcebb09f90c9a3">setMasterVolume</a> (float volume)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">set the audio volume for all audio activities other than voice call. <a href="#925092e556eb89f304bcebb09f90c9a3"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#39b2690e19219425b8cff093ef83bfb1">setRouting</a> (int mode, uint32_t routes)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Audio routing methods. <a href="#39b2690e19219425b8cff093ef83bfb1"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#1886de8fff2342ae628dbbbc0c45ba83">getRouting</a> (int mode, uint32_t *routes)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#aaf2a429c240f00b21836794849b430f">setMode</a> (int mode)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">setMode is called when the audio mode changes. <a href="#aaf2a429c240f00b21836794849b430f"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#8466c76328a51b8a83da103032abba55">getMode</a> (int *mode)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#be35b7cb738531939a3ac9abc5514621">setMicMute</a> (bool state)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#15d3c33d7e3f965dc2588c537f05a133">getMicMute</a> (bool *state)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#a1b477901df48b3a27103a77e6bb39c8">setParameter</a> (const char *key, const char *value)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#19f68d873b2a6e4c00c017c580170395">getInputBufferSize</a> (uint32_t sampleRate, int format, int channelCount)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classandroid_1_1_audio_stream_out.html">AudioStreamOut</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#eda0986e145c8dd68d21cb79051f94f9">openOutputStream</a> (int format=0, int channelCount=0, uint32_t sampleRate=0, status_t *status=0)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">This method creates and opens the audio hardware output stream. <a href="#eda0986e145c8dd68d21cb79051f94f9"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classandroid_1_1_audio_stream_in.html">AudioStreamIn</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#efb777d192fcbcd65458fa4f2d976476">openInputStream</a> (int format, int channelCount, uint32_t sampleRate, status_t *status)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">This method creates and opens the audio hardware input stream. <a href="#efb777d192fcbcd65458fa4f2d976476"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#05f035af60e67a22251175b44a089f69">dumpState</a> (int fd, const Vector< String16 > &args)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">This method dumps the state of the audio hardware. <a href="#05f035af60e67a22251175b44a089f69"></a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classandroid_1_1_audio_hardware_interface.html">AudioHardwareInterface</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#aa5ae45e9ad969fefc494e103cf5068d">create</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#d82c3e4827f275abf28eb872e8751e1f">doRouting</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">doRouting actually initiates the routing. <a href="#d82c3e4827f275abf28eb872e8751e1f"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_hardware_interface.html#371f198a416cb726804e0f47e8763217">dump</a> (int fd, const Vector< String16 > &args)=0</td></tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||||
|
<a class="el" href="_audio_hardware_interface_8h.html">AudioHardwareInterface.h</a> defines the interface to the audio hardware abstraction layer.
|
||||||
|
<p>
|
||||||
|
The interface supports setting and getting parameters, selecting audio routing paths, and defining input and output streams.<p>
|
||||||
|
AudioFlinger initializes the audio hardware and immediately opens an output stream. You can set Audio routing to output to handset, speaker, Bluetooth, or a headset.<p>
|
||||||
|
The audio input stream is initialized when AudioFlinger is called to carry out a record operation.
|
||||||
|
<p>Definition at line <a class="el" href="_audio_hardware_interface_8h-source.html#l00144">144</a> of file <a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>.</p>
|
||||||
|
<hr><h2>Member Function Documentation</h2>
|
||||||
|
<a class="anchor" name="b7e19e09fa6cbc07c127122fa9866c50"></a><!-- doxytag: member="android::AudioHardwareInterface::initCheck" ref="b7e19e09fa6cbc07c127122fa9866c50" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::initCheck </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
check to see if the audio hardware interface has been initialized.
|
||||||
|
<p>
|
||||||
|
return status based on values defined in include/utils/Errors.h
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="61121d365bb4d182bdec2c1b12fb1178"></a><!-- doxytag: member="android::AudioHardwareInterface::standby" ref="61121d365bb4d182bdec2c1b12fb1178" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::standby </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
put the audio hardware into standby mode to conserve power.
|
||||||
|
<p>
|
||||||
|
Returns status based on include/utils/Errors.h
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="7b7418072df1eeaacc89cd0c725755f6"></a><!-- doxytag: member="android::AudioHardwareInterface::setVoiceVolume" ref="7b7418072df1eeaacc89cd0c725755f6" args="(float volume)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setVoiceVolume </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">float </td>
|
||||||
|
<td class="paramname"> <em>volume</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
set the audio volume of a voice call.
|
||||||
|
<p>
|
||||||
|
Range is between 0.0 and 1.0
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="925092e556eb89f304bcebb09f90c9a3"></a><!-- doxytag: member="android::AudioHardwareInterface::setMasterVolume" ref="925092e556eb89f304bcebb09f90c9a3" args="(float volume)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setMasterVolume </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">float </td>
|
||||||
|
<td class="paramname"> <em>volume</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
set the audio volume for all audio activities other than voice call.
|
||||||
|
<p>
|
||||||
|
Range between 0.0 and 1.0. If any value other than NO_ERROR is returned, the software mixer will emulate this capability.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="39b2690e19219425b8cff093ef83bfb1"></a><!-- doxytag: member="android::AudioHardwareInterface::setRouting" ref="39b2690e19219425b8cff093ef83bfb1" args="(int mode, uint32_t routes)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setRouting </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>mode</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">uint32_t </td>
|
||||||
|
<td class="paramname"> <em>routes</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Audio routing methods.
|
||||||
|
<p>
|
||||||
|
Routes defined in include/hardware/AudioSystem.h. Audio routes can be (ROUTE_EARPIECE | ROUTE_SPEAKER | ROUTE_BLUETOOTH | ROUTE_HEADSET)<p>
|
||||||
|
setRouting sets the routes for a mode. This is called at startup. It is also called when a new device is connected, such as a wired headset is plugged in or a Bluetooth headset is paired.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="1886de8fff2342ae628dbbbc0c45ba83"></a><!-- doxytag: member="android::AudioHardwareInterface::getRouting" ref="1886de8fff2342ae628dbbbc0c45ba83" args="(int mode, uint32_t *routes)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::getRouting </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>mode</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">uint32_t * </td>
|
||||||
|
<td class="paramname"> <em>routes</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="aaf2a429c240f00b21836794849b430f"></a><!-- doxytag: member="android::AudioHardwareInterface::setMode" ref="aaf2a429c240f00b21836794849b430f" args="(int mode)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setMode </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>mode</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
setMode is called when the audio mode changes.
|
||||||
|
<p>
|
||||||
|
NORMAL mode is for standard audio playback, RINGTONE when a ringtone is playing, and IN_CALL when a call is in progress.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="8466c76328a51b8a83da103032abba55"></a><!-- doxytag: member="android::AudioHardwareInterface::getMode" ref="8466c76328a51b8a83da103032abba55" args="(int *mode)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::getMode </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int * </td>
|
||||||
|
<td class="paramname"> <em>mode</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="be35b7cb738531939a3ac9abc5514621"></a><!-- doxytag: member="android::AudioHardwareInterface::setMicMute" ref="be35b7cb738531939a3ac9abc5514621" args="(bool state)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setMicMute </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">bool </td>
|
||||||
|
<td class="paramname"> <em>state</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="15d3c33d7e3f965dc2588c537f05a133"></a><!-- doxytag: member="android::AudioHardwareInterface::getMicMute" ref="15d3c33d7e3f965dc2588c537f05a133" args="(bool *state)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::getMicMute </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">bool * </td>
|
||||||
|
<td class="paramname"> <em>state</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="a1b477901df48b3a27103a77e6bb39c8"></a><!-- doxytag: member="android::AudioHardwareInterface::setParameter" ref="a1b477901df48b3a27103a77e6bb39c8" args="(const char *key, const char *value)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::setParameter </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">const char * </td>
|
||||||
|
<td class="paramname"> <em>key</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const char * </td>
|
||||||
|
<td class="paramname"> <em>value</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="19f68d873b2a6e4c00c017c580170395"></a><!-- doxytag: member="android::AudioHardwareInterface::getInputBufferSize" ref="19f68d873b2a6e4c00c017c580170395" args="(uint32_t sampleRate, int format, int channelCount)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual size_t android::AudioHardwareInterface::getInputBufferSize </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">uint32_t </td>
|
||||||
|
<td class="paramname"> <em>sampleRate</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>format</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>channelCount</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="eda0986e145c8dd68d21cb79051f94f9"></a><!-- doxytag: member="android::AudioHardwareInterface::openOutputStream" ref="eda0986e145c8dd68d21cb79051f94f9" args="(int format=0, int channelCount=0, uint32_t sampleRate=0, status_t *status=0)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual <a class="el" href="classandroid_1_1_audio_stream_out.html">AudioStreamOut</a>* android::AudioHardwareInterface::openOutputStream </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>format</em> = <code>0</code>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>channelCount</em> = <code>0</code>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">uint32_t </td>
|
||||||
|
<td class="paramname"> <em>sampleRate</em> = <code>0</code>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">status_t * </td>
|
||||||
|
<td class="paramname"> <em>status</em> = <code>0</code></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This method creates and opens the audio hardware output stream.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="efb777d192fcbcd65458fa4f2d976476"></a><!-- doxytag: member="android::AudioHardwareInterface::openInputStream" ref="efb777d192fcbcd65458fa4f2d976476" args="(int format, int channelCount, uint32_t sampleRate, status_t *status)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual <a class="el" href="classandroid_1_1_audio_stream_in.html">AudioStreamIn</a>* android::AudioHardwareInterface::openInputStream </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>format</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>channelCount</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">uint32_t </td>
|
||||||
|
<td class="paramname"> <em>sampleRate</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">status_t * </td>
|
||||||
|
<td class="paramname"> <em>status</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This method creates and opens the audio hardware input stream.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="05f035af60e67a22251175b44a089f69"></a><!-- doxytag: member="android::AudioHardwareInterface::dumpState" ref="05f035af60e67a22251175b44a089f69" args="(int fd, const Vector< String16 > &args)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::dumpState </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>fd</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const Vector< String16 > & </td>
|
||||||
|
<td class="paramname"> <em>args</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This method dumps the state of the audio hardware.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="aa5ae45e9ad969fefc494e103cf5068d"></a><!-- doxytag: member="android::AudioHardwareInterface::create" ref="aa5ae45e9ad969fefc494e103cf5068d" args="()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">static <a class="el" href="classandroid_1_1_audio_hardware_interface.html">AudioHardwareInterface</a>* android::AudioHardwareInterface::create </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [static]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="d82c3e4827f275abf28eb872e8751e1f"></a><!-- doxytag: member="android::AudioHardwareInterface::doRouting" ref="d82c3e4827f275abf28eb872e8751e1f" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::doRouting </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [protected, pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
doRouting actually initiates the routing.
|
||||||
|
<p>
|
||||||
|
A call to setRouting or setMode may result in a routing change. The generic logic calls doRouting when required. If the device has any special requirements these methods can be overriden.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="371f198a416cb726804e0f47e8763217"></a><!-- doxytag: member="android::AudioHardwareInterface::dump" ref="371f198a416cb726804e0f47e8763217" args="(int fd, const Vector< String16 > &args)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioHardwareInterface::dump </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>fd</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const Vector< String16 > & </td>
|
||||||
|
<td class="paramname"> <em>args</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [protected, pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr>The documentation for this class was generated from the following file:<ul>
|
||||||
|
<li><a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a></ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
292
pdk/docs/classandroid_1_1_audio_stream_in.html
Executable file
@@ -0,0 +1,292 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="navpath"><a class="el" href="namespaceandroid.html">android</a>::<a class="el" href="classandroid_1_1_audio_stream_in.html">AudioStreamIn</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>android::AudioStreamIn Class Reference</h1><!-- doxytag: class="android::AudioStreamIn" --><a class="el" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a> is the abstraction interface for the audio input hardware.
|
||||||
|
<a href="#_details">More...</a>
|
||||||
|
<p>
|
||||||
|
<code>#include <<a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>></code>
|
||||||
|
<p>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#72067577568bbdd0163c1369fe80f101">~AudioStreamIn</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#a458f9cde3edde82f256af7eaa7b2ddf">bufferSize</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return the input buffer size allowed by audio driver <a href="#a458f9cde3edde82f256af7eaa7b2ddf"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#04f84006dd5f2e0a5e512897a039f851">channelCount</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return the number of audio input channels <a href="#04f84006dd5f2e0a5e512897a039f851"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#4ade98c5243b9ed5f3a71a8f36e74b36">format</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return audio format in 8bit or 16bit PCM format - eg. <a href="#4ade98c5243b9ed5f3a71a8f36e74b36"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#43d2c6b97806c005f0717a7bb6f7595c">frameSize</a> () const </td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return the frame size (number of bytes per sample). <a href="#43d2c6b97806c005f0717a7bb6f7595c"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#339822afb3f2f2ac1b4c775d31d12440">setGain</a> (float gain)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">set the input gain for the audio driver. <a href="#339822afb3f2f2ac1b4c775d31d12440"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual ssize_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#7c313cbfbb47dafd90f3225bcd26e592">read</a> (void *buffer, ssize_t bytes)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">read audio buffer in from audio driver <a href="#7c313cbfbb47dafd90f3225bcd26e592"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#18c3760208bfb99498715a0d4977f675">dump</a> (int fd, const Vector< String16 > &args)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">dump the state of the audio input device <a href="#18c3760208bfb99498715a0d4977f675"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_in.html#93fab46e8afdbaedd4d20cc6ee2b7c41">standby</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Put the audio hardware input into standby mode. <a href="#93fab46e8afdbaedd4d20cc6ee2b7c41"></a><br></td></tr>
|
||||||
|
</table>
|
||||||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||||
|
<a class="el" href="classandroid_1_1_audio_stream_in.html" title="AudioStreamIn is the abstraction interface for the audio input hardware.">AudioStreamIn</a> is the abstraction interface for the audio input hardware.
|
||||||
|
<p>
|
||||||
|
It defines the various properties of the audio hardware input driver.
|
||||||
|
<p>Definition at line <a class="el" href="_audio_hardware_interface_8h-source.html#l00093">93</a> of file <a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>.</p>
|
||||||
|
<hr><h2>Constructor & Destructor Documentation</h2>
|
||||||
|
<a class="anchor" name="72067577568bbdd0163c1369fe80f101"></a><!-- doxytag: member="android::AudioStreamIn::~AudioStreamIn" ref="72067577568bbdd0163c1369fe80f101" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual android::AudioStreamIn::~AudioStreamIn </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr><h2>Member Function Documentation</h2>
|
||||||
|
<a class="anchor" name="a458f9cde3edde82f256af7eaa7b2ddf"></a><!-- doxytag: member="android::AudioStreamIn::bufferSize" ref="a458f9cde3edde82f256af7eaa7b2ddf" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual size_t android::AudioStreamIn::bufferSize </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return the input buffer size allowed by audio driver
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="04f84006dd5f2e0a5e512897a039f851"></a><!-- doxytag: member="android::AudioStreamIn::channelCount" ref="04f84006dd5f2e0a5e512897a039f851" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual int android::AudioStreamIn::channelCount </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return the number of audio input channels
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="4ade98c5243b9ed5f3a71a8f36e74b36"></a><!-- doxytag: member="android::AudioStreamIn::format" ref="4ade98c5243b9ed5f3a71a8f36e74b36" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual int android::AudioStreamIn::format </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return audio format in 8bit or 16bit PCM format - eg.
|
||||||
|
<p>
|
||||||
|
AudioSystem:PCM_16_BIT
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="43d2c6b97806c005f0717a7bb6f7595c"></a><!-- doxytag: member="android::AudioStreamIn::frameSize" ref="43d2c6b97806c005f0717a7bb6f7595c" args="() const " -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">uint32_t android::AudioStreamIn::frameSize </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [inline]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return the frame size (number of bytes per sample).
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="_audio_hardware_interface_8h-source.html#l00112">112</a> of file <a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="339822afb3f2f2ac1b4c775d31d12440"></a><!-- doxytag: member="android::AudioStreamIn::setGain" ref="339822afb3f2f2ac1b4c775d31d12440" args="(float gain)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioStreamIn::setGain </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">float </td>
|
||||||
|
<td class="paramname"> <em>gain</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
set the input gain for the audio driver.
|
||||||
|
<p>
|
||||||
|
This method is for for future use
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="7c313cbfbb47dafd90f3225bcd26e592"></a><!-- doxytag: member="android::AudioStreamIn::read" ref="7c313cbfbb47dafd90f3225bcd26e592" args="(void *buffer, ssize_t bytes)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual ssize_t android::AudioStreamIn::read </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">void * </td>
|
||||||
|
<td class="paramname"> <em>buffer</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">ssize_t </td>
|
||||||
|
<td class="paramname"> <em>bytes</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
read audio buffer in from audio driver
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="18c3760208bfb99498715a0d4977f675"></a><!-- doxytag: member="android::AudioStreamIn::dump" ref="18c3760208bfb99498715a0d4977f675" args="(int fd, const Vector< String16 > &args)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioStreamIn::dump </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>fd</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const Vector< String16 > & </td>
|
||||||
|
<td class="paramname"> <em>args</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
dump the state of the audio input device
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="93fab46e8afdbaedd4d20cc6ee2b7c41"></a><!-- doxytag: member="android::AudioStreamIn::standby" ref="93fab46e8afdbaedd4d20cc6ee2b7c41" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioStreamIn::standby </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Put the audio hardware input into standby mode.
|
||||||
|
<p>
|
||||||
|
Returns status based on include/utils/Errors.h
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr>The documentation for this class was generated from the following file:<ul>
|
||||||
|
<li><a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a></ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
316
pdk/docs/classandroid_1_1_audio_stream_out.html
Executable file
@@ -0,0 +1,316 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="navpath"><a class="el" href="namespaceandroid.html">android</a>::<a class="el" href="classandroid_1_1_audio_stream_out.html">AudioStreamOut</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>android::AudioStreamOut Class Reference</h1><!-- doxytag: class="android::AudioStreamOut" --><a class="el" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a> is the abstraction interface for the audio output hardware.
|
||||||
|
<a href="#_details">More...</a>
|
||||||
|
<p>
|
||||||
|
<code>#include <<a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>></code>
|
||||||
|
<p>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#09074dbae95b82d4f83c513035a0034f">~AudioStreamOut</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#6bb028e125d13289f26d3d74f851c921">sampleRate</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return audio sampling rate in hz - eg. <a href="#6bb028e125d13289f26d3d74f851c921"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#7b3c5f2ce79b9b6f167408f63d19af0a">bufferSize</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">returns size of output buffer - eg. <a href="#7b3c5f2ce79b9b6f167408f63d19af0a"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#4e880a5379c168e8f68c26827e41275b">channelCount</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return number of output audio channels. <a href="#4e880a5379c168e8f68c26827e41275b"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#eb2b430bbff4eebd8fb8590507b1dce1">format</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return audio format in 8bit or 16bit PCM format - eg. <a href="#eb2b430bbff4eebd8fb8590507b1dce1"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#66b7c4bb510db4060adfd03a376897d8">frameSize</a> () const </td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return the frame size (number of bytes per sample). <a href="#66b7c4bb510db4060adfd03a376897d8"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#c698a3d95cf0829dcfe283cd5ea437cb">latency</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">return the audio hardware driver latency in milli seconds. <a href="#c698a3d95cf0829dcfe283cd5ea437cb"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#e6d301925d193c25561b42239c7f44b6">setVolume</a> (float volume)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Use this method in situations where audio mixing is done in the hardware. <a href="#e6d301925d193c25561b42239c7f44b6"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual ssize_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#cba177e4a4a35a87ab9f8aa2a9c0e78e">write</a> (const void *buffer, size_t bytes)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">write audio buffer to driver. <a href="#cba177e4a4a35a87ab9f8aa2a9c0e78e"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_audio_stream_out.html#97e3cc4610ba40d6c37b3d376a032b98">dump</a> (int fd, const Vector< String16 > &args)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">dump the state of the audio output device <a href="#97e3cc4610ba40d6c37b3d376a032b98"></a><br></td></tr>
|
||||||
|
</table>
|
||||||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||||
|
<a class="el" href="classandroid_1_1_audio_stream_out.html" title="AudioStreamOut is the abstraction interface for the audio output hardware.">AudioStreamOut</a> is the abstraction interface for the audio output hardware.
|
||||||
|
<p>
|
||||||
|
It provides information about various properties of the audio output hardware driver.
|
||||||
|
<p>Definition at line <a class="el" href="_audio_hardware_interface_8h-source.html#l00040">40</a> of file <a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>.</p>
|
||||||
|
<hr><h2>Constructor & Destructor Documentation</h2>
|
||||||
|
<a class="anchor" name="09074dbae95b82d4f83c513035a0034f"></a><!-- doxytag: member="android::AudioStreamOut::~AudioStreamOut" ref="09074dbae95b82d4f83c513035a0034f" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual android::AudioStreamOut::~AudioStreamOut </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr><h2>Member Function Documentation</h2>
|
||||||
|
<a class="anchor" name="6bb028e125d13289f26d3d74f851c921"></a><!-- doxytag: member="android::AudioStreamOut::sampleRate" ref="6bb028e125d13289f26d3d74f851c921" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual uint32_t android::AudioStreamOut::sampleRate </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return audio sampling rate in hz - eg.
|
||||||
|
<p>
|
||||||
|
44100
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="7b3c5f2ce79b9b6f167408f63d19af0a"></a><!-- doxytag: member="android::AudioStreamOut::bufferSize" ref="7b3c5f2ce79b9b6f167408f63d19af0a" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual size_t android::AudioStreamOut::bufferSize </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
returns size of output buffer - eg.
|
||||||
|
<p>
|
||||||
|
4800
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="4e880a5379c168e8f68c26827e41275b"></a><!-- doxytag: member="android::AudioStreamOut::channelCount" ref="4e880a5379c168e8f68c26827e41275b" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual int android::AudioStreamOut::channelCount </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return number of output audio channels.
|
||||||
|
<p>
|
||||||
|
Acceptable values are 1 (mono) or 2 (stereo)
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="eb2b430bbff4eebd8fb8590507b1dce1"></a><!-- doxytag: member="android::AudioStreamOut::format" ref="eb2b430bbff4eebd8fb8590507b1dce1" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual int android::AudioStreamOut::format </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return audio format in 8bit or 16bit PCM format - eg.
|
||||||
|
<p>
|
||||||
|
AudioSystem:PCM_16_BIT
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="66b7c4bb510db4060adfd03a376897d8"></a><!-- doxytag: member="android::AudioStreamOut::frameSize" ref="66b7c4bb510db4060adfd03a376897d8" args="() const " -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">uint32_t android::AudioStreamOut::frameSize </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [inline]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return the frame size (number of bytes per sample).
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="_audio_hardware_interface_8h-source.html#l00065">65</a> of file <a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="c698a3d95cf0829dcfe283cd5ea437cb"></a><!-- doxytag: member="android::AudioStreamOut::latency" ref="c698a3d95cf0829dcfe283cd5ea437cb" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual uint32_t android::AudioStreamOut::latency </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
return the audio hardware driver latency in milli seconds.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="e6d301925d193c25561b42239c7f44b6"></a><!-- doxytag: member="android::AudioStreamOut::setVolume" ref="e6d301925d193c25561b42239c7f44b6" args="(float volume)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioStreamOut::setVolume </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">float </td>
|
||||||
|
<td class="paramname"> <em>volume</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use this method in situations where audio mixing is done in the hardware.
|
||||||
|
<p>
|
||||||
|
This method serves as a direct interface with hardware, allowing you to directly set the volume as apposed to via the framework. This method might produce multiple PCM outputs or hardware accelerated codecs, such as MP3 or AAC.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="cba177e4a4a35a87ab9f8aa2a9c0e78e"></a><!-- doxytag: member="android::AudioStreamOut::write" ref="cba177e4a4a35a87ab9f8aa2a9c0e78e" args="(const void *buffer, size_t bytes)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual ssize_t android::AudioStreamOut::write </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">const void * </td>
|
||||||
|
<td class="paramname"> <em>buffer</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">size_t </td>
|
||||||
|
<td class="paramname"> <em>bytes</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
write audio buffer to driver.
|
||||||
|
<p>
|
||||||
|
Returns number of bytes written
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="97e3cc4610ba40d6c37b3d376a032b98"></a><!-- doxytag: member="android::AudioStreamOut::dump" ref="97e3cc4610ba40d6c37b3d376a032b98" args="(int fd, const Vector< String16 > &args)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::AudioStreamOut::dump </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>fd</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const Vector< String16 > & </td>
|
||||||
|
<td class="paramname"> <em>args</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
dump the state of the audio output device
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr>The documentation for this class was generated from the following file:<ul>
|
||||||
|
<li><a class="el" href="_audio_hardware_interface_8h-source.html">AudioHardwareInterface.h</a></ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
393
pdk/docs/classandroid_1_1_camera_hardware_interface.html
Executable file
@@ -0,0 +1,393 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="navpath"><a class="el" href="namespaceandroid.html">android</a>::<a class="el" href="classandroid_1_1_camera_hardware_interface.html">CameraHardwareInterface</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>android::CameraHardwareInterface Class Reference</h1><!-- doxytag: class="android::CameraHardwareInterface" --><a class="el" href="_camera_hardware_interface_8h.html">CameraHardwareInterface.h</a> defines the interface to the camera hardware abstraction layer, used for setting and getting parameters, live previewing, and taking pictures.
|
||||||
|
<a href="#_details">More...</a>
|
||||||
|
<p>
|
||||||
|
<code>#include <<a class="el" href="_camera_hardware_interface_8h-source.html">CameraHardwareInterface.h</a>></code>
|
||||||
|
<p>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#99f4ab74b58cd4b23e0fb00a46a60cb1">~CameraHardwareInterface</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual sp< IMemoryHeap > </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#9d4071fb234a0c2e7bf6ea78e723f2f4">getPreviewHeap</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the IMemoryHeap for the preview image heap. <a href="#9d4071fb234a0c2e7bf6ea78e723f2f4"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#62def8031dee8bdab7933770708a6312">startPreview</a> (<a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636">preview_callback</a> cb, void *user)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Start preview mode. <a href="#62def8031dee8bdab7933770708a6312"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#34faa77065f415b93cb1acf84fc788bf">stopPreview</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a previously started preview. <a href="#34faa77065f415b93cb1acf84fc788bf"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515">autoFocus</a> (<a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2">autofocus_callback</a>, void *user)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Start auto focus, the callback routine is called once when focusing is complete. <a href="#0dda73938e9b18326dd48bd721dbd515"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#2aedf65cad695ce439029f37a7cb66c4">takePicture</a> (<a class="el" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65">shutter_callback</a>, <a class="el" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e">raw_callback</a>, <a class="el" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473">jpeg_callback</a>, void *user)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Take a picture. <a href="#2aedf65cad695ce439029f37a7cb66c4"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#da8faf376215a605357d26afa1b79386">cancelPicture</a> (bool cancel_shutter, bool cancel_raw, bool cancel_jpeg)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Cancel a picture that was started with takePicture. <a href="#da8faf376215a605357d26afa1b79386"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#82e54ede14bd263274bbc8777bafc384">setParameters</a> (const CameraParameters &params)=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the camera parameters. <a href="#82e54ede14bd263274bbc8777bafc384"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual CameraParameters </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#4c748a3c0aa3c5f2333e0abcdbeb15cb">getParameters</a> () const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the camera parameters. <a href="#4c748a3c0aa3c5f2333e0abcdbeb15cb"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#df65310b8aa176e0ce5f08b87d6b7eb8">release</a> ()=0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Release the hardware resources owned by this object. <a href="#df65310b8aa176e0ce5f08b87d6b7eb8"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual status_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classandroid_1_1_camera_hardware_interface.html#06df1bf91b8af07964dca314a6031b32">dump</a> (int fd, const Vector< String16 > &args) const =0</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Dump state of the camera hardware. <a href="#06df1bf91b8af07964dca314a6031b32"></a><br></td></tr>
|
||||||
|
</table>
|
||||||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||||
|
<a class="el" href="_camera_hardware_interface_8h.html">CameraHardwareInterface.h</a> defines the interface to the camera hardware abstraction layer, used for setting and getting parameters, live previewing, and taking pictures.
|
||||||
|
<p>
|
||||||
|
It is a referenced counted interface with RefBase as its base class. CameraService calls <a class="el" href="namespaceandroid.html#24c243f7f9ba0d1d881be17ae06254a2" title="factory function to instantiate a camera hardware object">openCameraHardware()</a> to retrieve a strong pointer to the instance of this interface and may be called multiple times. The following steps describe a typical sequence:<p>
|
||||||
|
<ol type=1>
|
||||||
|
<li>After CameraService calls <a class="el" href="namespaceandroid.html#24c243f7f9ba0d1d881be17ae06254a2" title="factory function to instantiate a camera hardware object">openCameraHardware()</a>, <a class="el" href="classandroid_1_1_camera_hardware_interface.html#4c748a3c0aa3c5f2333e0abcdbeb15cb" title="Return the camera parameters.">getParameters()</a> and <a class="el" href="classandroid_1_1_camera_hardware_interface.html#82e54ede14bd263274bbc8777bafc384" title="Set the camera parameters.">setParameters()</a> are used to initialize the camera instance. CameraService calls <a class="el" href="classandroid_1_1_camera_hardware_interface.html#9d4071fb234a0c2e7bf6ea78e723f2f4" title="Return the IMemoryHeap for the preview image heap.">getPreviewHeap()</a> to establish access to the preview heap so it can be registered with SurfaceFlinger for efficient display updating while in preview mode.</li><li><a class="el" href="classandroid_1_1_camera_hardware_interface.html#62def8031dee8bdab7933770708a6312" title="Start preview mode.">startPreview()</a> is called, which is passed a <a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636" title="Callback for startPreview().">preview_callback()</a> function and a user parameter. The camera instance then periodically calls <a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636" title="Callback for startPreview().">preview_callback()</a> each time a new preview frame is available. The callback routine has two parameters: the first is a pointer to the IMemory containing the frame and the second a user parameter. If the preview_callback code needs to use this memory after returning, it must copy the data.</li></ol>
|
||||||
|
<p>
|
||||||
|
Prior to taking a picture, CameraService calls autofocus() with <a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2" title="Callback for autoFocus().">autofocus_callback()</a> and a user parameter. When auto focusing has completed, the camera instance calls <a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2" title="Callback for autoFocus().">autofocus_callback()</a>, which informs the application whether focusing was successful. The camera instance only calls <a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2" title="Callback for autoFocus().">autofocus_callback()</a> once and it is up to the application to call <a class="el" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515" title="Start auto focus, the callback routine is called once when focusing is complete.">autoFocus()</a> again if refocusing is desired.<p>
|
||||||
|
CameraService calls <a class="el" href="classandroid_1_1_camera_hardware_interface.html#2aedf65cad695ce439029f37a7cb66c4" title="Take a picture.">takePicture()</a> to request the camera instance take a picture. This method has two callbacks: <a class="el" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e" title="Callback for takePicture().">raw_callback()</a> and <a class="el" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473" title="Callback for takePicture().">jpeg_callback()</a>. When the raw image is available, <a class="el" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e" title="Callback for takePicture().">raw_callback()</a> is called with a pointer to the IMemory containing the raw image. When the jpeg image is available, <a class="el" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473" title="Callback for takePicture().">jpeg_callback()</a> is called with a pointer to the IMemory containing the jpeg image. As with <a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636" title="Callback for startPreview().">preview_callback()</a>, the memory must be copied if it's needed after returning.
|
||||||
|
<p>Definition at line <a class="el" href="_camera_hardware_interface_8h-source.html#l00079">79</a> of file <a class="el" href="_camera_hardware_interface_8h-source.html">CameraHardwareInterface.h</a>.</p>
|
||||||
|
<hr><h2>Constructor & Destructor Documentation</h2>
|
||||||
|
<a class="anchor" name="99f4ab74b58cd4b23e0fb00a46a60cb1"></a><!-- doxytag: member="android::CameraHardwareInterface::~CameraHardwareInterface" ref="99f4ab74b58cd4b23e0fb00a46a60cb1" args="()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual android::CameraHardwareInterface::~CameraHardwareInterface </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [inline, virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="_camera_hardware_interface_8h-source.html#l00081">81</a> of file <a class="el" href="_camera_hardware_interface_8h-source.html">CameraHardwareInterface.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr><h2>Member Function Documentation</h2>
|
||||||
|
<a class="anchor" name="9d4071fb234a0c2e7bf6ea78e723f2f4"></a><!-- doxytag: member="android::CameraHardwareInterface::getPreviewHeap" ref="9d4071fb234a0c2e7bf6ea78e723f2f4" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual sp<IMemoryHeap> android::CameraHardwareInterface::getPreviewHeap </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Return the IMemoryHeap for the preview image heap.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="62def8031dee8bdab7933770708a6312"></a><!-- doxytag: member="android::CameraHardwareInterface::startPreview" ref="62def8031dee8bdab7933770708a6312" args="(preview_callback cb, void *user)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::startPreview </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype"><a class="el" href="namespaceandroid.html#d32b08663d42356404e2eb971e271636">preview_callback</a> </td>
|
||||||
|
<td class="paramname"> <em>cb</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">void * </td>
|
||||||
|
<td class="paramname"> <em>user</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Start preview mode.
|
||||||
|
<p>
|
||||||
|
When a preview image is available preview_callback is called with the user parameter. The call back parameter may be null.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="34faa77065f415b93cb1acf84fc788bf"></a><!-- doxytag: member="android::CameraHardwareInterface::stopPreview" ref="34faa77065f415b93cb1acf84fc788bf" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual void android::CameraHardwareInterface::stopPreview </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Stop a previously started preview.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="0dda73938e9b18326dd48bd721dbd515"></a><!-- doxytag: member="android::CameraHardwareInterface::autoFocus" ref="0dda73938e9b18326dd48bd721dbd515" args="(autofocus_callback, void *user)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::autoFocus </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype"><a class="el" href="namespaceandroid.html#4dca8d8b824ca9a684358133da0ec8f2">autofocus_callback</a> </td>
|
||||||
|
<td class="paramname">, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">void * </td>
|
||||||
|
<td class="paramname"> <em>user</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Start auto focus, the callback routine is called once when focusing is complete.
|
||||||
|
<p>
|
||||||
|
<a class="el" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515" title="Start auto focus, the callback routine is called once when focusing is complete.">autoFocus()</a> will be called again if another auto focus is needed.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="2aedf65cad695ce439029f37a7cb66c4"></a><!-- doxytag: member="android::CameraHardwareInterface::takePicture" ref="2aedf65cad695ce439029f37a7cb66c4" args="(shutter_callback, raw_callback, jpeg_callback, void *user)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::takePicture </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype"><a class="el" href="namespaceandroid.html#04c83209c2627e2d303320712ca9ee65">shutter_callback</a> </td>
|
||||||
|
<td class="paramname">, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype"><a class="el" href="namespaceandroid.html#a97926709e452d66360cb9b24736969e">raw_callback</a> </td>
|
||||||
|
<td class="paramname">, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype"><a class="el" href="namespaceandroid.html#c21980d4be1e0cc458399ecf5374d473">jpeg_callback</a> </td>
|
||||||
|
<td class="paramname">, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">void * </td>
|
||||||
|
<td class="paramname"> <em>user</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Take a picture.
|
||||||
|
<p>
|
||||||
|
The raw_callback is called when the uncompressed image is available. The jpeg_callback is called when the compressed image is available. These call backs may be null. The user parameter is passed to each of the call back routines.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="da8faf376215a605357d26afa1b79386"></a><!-- doxytag: member="android::CameraHardwareInterface::cancelPicture" ref="da8faf376215a605357d26afa1b79386" args="(bool cancel_shutter, bool cancel_raw, bool cancel_jpeg)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::cancelPicture </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">bool </td>
|
||||||
|
<td class="paramname"> <em>cancel_shutter</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">bool </td>
|
||||||
|
<td class="paramname"> <em>cancel_raw</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">bool </td>
|
||||||
|
<td class="paramname"> <em>cancel_jpeg</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Cancel a picture that was started with takePicture.
|
||||||
|
<p>
|
||||||
|
You may cancel any of the shutter, raw, or jpeg callbacks. Calling this method when no picture is being taken is a no-op.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="82e54ede14bd263274bbc8777bafc384"></a><!-- doxytag: member="android::CameraHardwareInterface::setParameters" ref="82e54ede14bd263274bbc8777bafc384" args="(const CameraParameters &params)=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::setParameters </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">const CameraParameters & </td>
|
||||||
|
<td class="paramname"> <em>params</em> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Set the camera parameters.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="4c748a3c0aa3c5f2333e0abcdbeb15cb"></a><!-- doxytag: member="android::CameraHardwareInterface::getParameters" ref="4c748a3c0aa3c5f2333e0abcdbeb15cb" args="() const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual CameraParameters android::CameraHardwareInterface::getParameters </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Return the camera parameters.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="df65310b8aa176e0ce5f08b87d6b7eb8"></a><!-- doxytag: member="android::CameraHardwareInterface::release" ref="df65310b8aa176e0ce5f08b87d6b7eb8" args="()=0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual void android::CameraHardwareInterface::release </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td><code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Release the hardware resources owned by this object.
|
||||||
|
<p>
|
||||||
|
Note that this is *not* done in the destructor.
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="06df1bf91b8af07964dca314a6031b32"></a><!-- doxytag: member="android::CameraHardwareInterface::dump" ref="06df1bf91b8af07964dca314a6031b32" args="(int fd, const Vector< String16 > &args) const =0" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">virtual status_t android::CameraHardwareInterface::dump </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramtype">int </td>
|
||||||
|
<td class="paramname"> <em>fd</em>, </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="paramkey"></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="paramtype">const Vector< String16 > & </td>
|
||||||
|
<td class="paramname"> <em>args</em></td><td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>)</td>
|
||||||
|
<td></td><td></td><td> const<code> [pure virtual]</code></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Dump state of the camera hardware.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr>The documentation for this class was generated from the following file:<ul>
|
||||||
|
<li><a class="el" href="_camera_hardware_interface_8h-source.html">CameraHardwareInterface.h</a></ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Display Drivers</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20display_drivers.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20display_drivers.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -181,7 +211,7 @@ h1,h2,h3 {
|
|||||||
/*
|
/*
|
||||||
* pguidefb.c
|
* pguidefb.c
|
||||||
*
|
*
|
||||||
* Copyright 2007, The Android Open Source Project
|
* Copyright 2007, Google Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -508,7 +538,7 @@ MODULE_LICENSE("GPL");
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
473
pdk/docs/doxygen.css
Executable file
@@ -0,0 +1,473 @@
|
|||||||
|
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
|
||||||
|
font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
BODY,TD {
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
H1 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 160%;
|
||||||
|
}
|
||||||
|
H2 {
|
||||||
|
font-size: 120%;
|
||||||
|
}
|
||||||
|
H3 {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
CAPTION {
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
DIV.qindex {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
padding: 2px;
|
||||||
|
line-height: 140%;
|
||||||
|
}
|
||||||
|
DIV.navpath {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
padding: 2px;
|
||||||
|
line-height: 140%;
|
||||||
|
}
|
||||||
|
DIV.navtab {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
TD.navtab {
|
||||||
|
font-size: 70%;
|
||||||
|
}
|
||||||
|
A.qindex {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1A419D;
|
||||||
|
}
|
||||||
|
A.qindex:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1A419D
|
||||||
|
}
|
||||||
|
A.qindex:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #ddddff;
|
||||||
|
}
|
||||||
|
A.qindexHL {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #6666cc;
|
||||||
|
color: #ffffff;
|
||||||
|
border: 1px double #9295C2;
|
||||||
|
}
|
||||||
|
A.qindexHL:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #6666cc;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
A.qindexHL:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #6666cc;
|
||||||
|
color: #ffffff
|
||||||
|
}
|
||||||
|
A.el {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
A.elRef {
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
A.code:link {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #0000FF
|
||||||
|
}
|
||||||
|
A.code:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #0000FF
|
||||||
|
}
|
||||||
|
A.codeRef:link {
|
||||||
|
font-weight: normal;
|
||||||
|
color: #0000FF
|
||||||
|
}
|
||||||
|
A.codeRef:visited {
|
||||||
|
font-weight: normal;
|
||||||
|
color: #0000FF
|
||||||
|
}
|
||||||
|
A:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #f2f2ff
|
||||||
|
}
|
||||||
|
DL.el {
|
||||||
|
margin-left: -1cm
|
||||||
|
}
|
||||||
|
.fragment {
|
||||||
|
font-family: monospace, fixed;
|
||||||
|
font-size: 95%;
|
||||||
|
}
|
||||||
|
PRE.fragment {
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
}
|
||||||
|
DIV.ah {
|
||||||
|
background-color: black;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #ffffff;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-top: 3px
|
||||||
|
}
|
||||||
|
|
||||||
|
DIV.groupHeader {
|
||||||
|
margin-left: 16px;
|
||||||
|
margin-top: 12px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
DIV.groupText {
|
||||||
|
margin-left: 16px;
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 90%
|
||||||
|
}
|
||||||
|
BODY {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
TD.indexkey {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right : 10px;
|
||||||
|
padding-top : 2px;
|
||||||
|
padding-left : 10px;
|
||||||
|
padding-bottom : 2px;
|
||||||
|
margin-left : 0px;
|
||||||
|
margin-right : 0px;
|
||||||
|
margin-top : 2px;
|
||||||
|
margin-bottom : 2px;
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
}
|
||||||
|
TD.indexvalue {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
font-style: italic;
|
||||||
|
padding-right : 10px;
|
||||||
|
padding-top : 2px;
|
||||||
|
padding-left : 10px;
|
||||||
|
padding-bottom : 2px;
|
||||||
|
margin-left : 0px;
|
||||||
|
margin-right : 0px;
|
||||||
|
margin-top : 2px;
|
||||||
|
margin-bottom : 2px;
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
}
|
||||||
|
TR.memlist {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
P.formulaDsp {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
IMG.formulaDsp {
|
||||||
|
}
|
||||||
|
IMG.formulaInl {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
SPAN.keyword { color: #008000 }
|
||||||
|
SPAN.keywordtype { color: #604020 }
|
||||||
|
SPAN.keywordflow { color: #e08000 }
|
||||||
|
SPAN.comment { color: #800000 }
|
||||||
|
SPAN.preprocessor { color: #806020 }
|
||||||
|
SPAN.stringliteral { color: #002080 }
|
||||||
|
SPAN.charliteral { color: #008080 }
|
||||||
|
SPAN.vhdldigit { color: #ff00ff }
|
||||||
|
SPAN.vhdlchar { color: #000000 }
|
||||||
|
SPAN.vhdlkeyword { color: #700070 }
|
||||||
|
SPAN.vhdllogic { color: #ff0000 }
|
||||||
|
|
||||||
|
.mdescLeft {
|
||||||
|
padding: 0px 8px 4px 8px;
|
||||||
|
font-size: 80%;
|
||||||
|
font-style: italic;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border-top: 1px none #E0E0E0;
|
||||||
|
border-right: 1px none #E0E0E0;
|
||||||
|
border-bottom: 1px none #E0E0E0;
|
||||||
|
border-left: 1px none #E0E0E0;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.mdescRight {
|
||||||
|
padding: 0px 8px 4px 8px;
|
||||||
|
font-size: 80%;
|
||||||
|
font-style: italic;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border-top: 1px none #E0E0E0;
|
||||||
|
border-right: 1px none #E0E0E0;
|
||||||
|
border-bottom: 1px none #E0E0E0;
|
||||||
|
border-left: 1px none #E0E0E0;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.memItemLeft {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memItemRight {
|
||||||
|
padding: 1px 8px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplItemLeft {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: none;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplItemRight {
|
||||||
|
padding: 1px 8px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: none;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplParams {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
color: #606060;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.search {
|
||||||
|
color: #003399;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
FORM.search {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
INPUT.search {
|
||||||
|
font-size: 75%;
|
||||||
|
color: #000080;
|
||||||
|
font-weight: normal;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
}
|
||||||
|
TD.tiny {
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #1A41A8;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #2A3798;
|
||||||
|
}
|
||||||
|
.dirtab {
|
||||||
|
padding: 4px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
}
|
||||||
|
TH.dirtab {
|
||||||
|
background: #e8eef2;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
HR {
|
||||||
|
height: 1px;
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style for detailed member documentation */
|
||||||
|
.memtemplate {
|
||||||
|
font-size: 80%;
|
||||||
|
color: #606060;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
.memnav {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
.memitem {
|
||||||
|
padding: 4px;
|
||||||
|
background-color: #eef3f5;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #dedeee;
|
||||||
|
-moz-border-radius: 8px 8px 8px 8px;
|
||||||
|
}
|
||||||
|
.memname {
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.memdoc{
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
.memproto {
|
||||||
|
background-color: #d5e1e8;
|
||||||
|
width: 100%;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #84b0c7;
|
||||||
|
font-weight: bold;
|
||||||
|
-moz-border-radius: 8px 8px 8px 8px;
|
||||||
|
}
|
||||||
|
.paramkey {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.paramtype {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.paramname {
|
||||||
|
color: #602020;
|
||||||
|
font-style: italic;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
/* End Styling for detailed member documentation */
|
||||||
|
|
||||||
|
/* for the tree view */
|
||||||
|
.ftvtree {
|
||||||
|
font-family: sans-serif;
|
||||||
|
margin:0.5em;
|
||||||
|
}
|
||||||
|
/* these are for tree view when used as main index */
|
||||||
|
.directory {
|
||||||
|
font-size: 9pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.directory h3 {
|
||||||
|
margin: 0px;
|
||||||
|
margin-top: 1em;
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The following two styles can be used to replace the root node title */
|
||||||
|
/* with an image of your choice. Simply uncomment the next two styles, */
|
||||||
|
/* specify the name of your image and be sure to set 'height' to the */
|
||||||
|
/* proper pixel height of your image. */
|
||||||
|
|
||||||
|
/* .directory h3.swap { */
|
||||||
|
/* height: 61px; */
|
||||||
|
/* background-repeat: no-repeat; */
|
||||||
|
/* background-image: url("yourimage.gif"); */
|
||||||
|
/* } */
|
||||||
|
/* .directory h3.swap span { */
|
||||||
|
/* display: none; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
.directory > h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.directory p {
|
||||||
|
margin: 0px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.directory div {
|
||||||
|
display: none;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.directory img {
|
||||||
|
vertical-align: -30%;
|
||||||
|
}
|
||||||
|
/* these are for tree view when not used as main index */
|
||||||
|
.directory-alt {
|
||||||
|
font-size: 100%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.directory-alt h3 {
|
||||||
|
margin: 0px;
|
||||||
|
margin-top: 1em;
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
.directory-alt > h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.directory-alt p {
|
||||||
|
margin: 0px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.directory-alt div {
|
||||||
|
display: none;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.directory-alt img {
|
||||||
|
vertical-align: -30%;
|
||||||
|
}
|
||||||
|
|
||||||
BIN
pdk/docs/doxygen.png
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
42
pdk/docs/files.html
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li class="current"><a href="files.html"><span>File List</span></a></li>
|
||||||
|
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="_audio_hardware_interface_8h.html">AudioHardwareInterface.h</a> <a href="_audio_hardware_interface_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="_camera_hardware_interface_8h.html">CameraHardwareInterface.h</a> <a href="_camera_hardware_interface_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="gps_8h.html">gps.h</a> <a href="gps_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
|
||||||
|
<tr><td class="indexkey"><a class="el" href="wifi_8h.html">wifi.h</a> <a href="wifi_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
258
pdk/docs/functions.html
Executable file
@@ -0,0 +1,258 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||||
|
<li><a href="functions_func.html"><span>Functions</span></a></li>
|
||||||
|
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#index_a"><span>a</span></a></li>
|
||||||
|
<li><a href="#index_b"><span>b</span></a></li>
|
||||||
|
<li><a href="#index_c"><span>c</span></a></li>
|
||||||
|
<li><a href="#index_d"><span>d</span></a></li>
|
||||||
|
<li><a href="#index_e"><span>e</span></a></li>
|
||||||
|
<li><a href="#index_f"><span>f</span></a></li>
|
||||||
|
<li><a href="#index_g"><span>g</span></a></li>
|
||||||
|
<li><a href="#index_i"><span>i</span></a></li>
|
||||||
|
<li><a href="#index_l"><span>l</span></a></li>
|
||||||
|
<li><a href="#index_n"><span>n</span></a></li>
|
||||||
|
<li><a href="#index_o"><span>o</span></a></li>
|
||||||
|
<li><a href="#index_p"><span>p</span></a></li>
|
||||||
|
<li><a href="#index_r"><span>r</span></a></li>
|
||||||
|
<li><a href="#index_s"><span>s</span></a></li>
|
||||||
|
<li><a href="#index_t"><span>t</span></a></li>
|
||||||
|
<li><a href="#index_u"><span>u</span></a></li>
|
||||||
|
<li><a href="#index_w"><span>w</span></a></li>
|
||||||
|
<li><a href="#index_~"><span>~</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
Here is a list of all struct and union fields with links to the structures/unions they belong to:
|
||||||
|
<p>
|
||||||
|
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
|
||||||
|
<li>accuracy
|
||||||
|
: <a class="el" href="struct_gps_location.html#801ec0db8ee69fa263a63528876d773b">GpsLocation</a>
|
||||||
|
<li>almanac_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#6ed4b741a9882ecc2852e94e8ad60310">GpsSvStatus</a>
|
||||||
|
<li>altitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#cb3cc5ad378a6a3864e47ae67df38778">GpsLocation</a>
|
||||||
|
<li>autoFocus()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515">android::CameraHardwareInterface</a>
|
||||||
|
<li>azimuth
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#94755ad36e31a012269459d5a4ef0594">GpsSvInfo</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
|
||||||
|
<li>bearing
|
||||||
|
: <a class="el" href="struct_gps_location.html#b71bf9b61cf55f10ffcf34ba1654d082">GpsLocation</a>
|
||||||
|
<li>bufferSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#a458f9cde3edde82f256af7eaa7b2ddf">android::AudioStreamIn</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_out.html#7b3c5f2ce79b9b6f167408f63d19af0a">android::AudioStreamOut</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
|
||||||
|
<li>cancelPicture()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#da8faf376215a605357d26afa1b79386">android::CameraHardwareInterface</a>
|
||||||
|
<li>channelCount()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#4e880a5379c168e8f68c26827e41275b">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#04f84006dd5f2e0a5e512897a039f851">android::AudioStreamIn</a>
|
||||||
|
<li>cleanup
|
||||||
|
: <a class="el" href="struct_gps_interface.html#2911808e36c70259dc0db162de02dc13">GpsInterface</a>
|
||||||
|
<li>create()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#aa5ae45e9ad969fefc494e103cf5068d">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
|
||||||
|
<li>delete_aiding_data
|
||||||
|
: <a class="el" href="struct_gps_interface.html#a3a9b81a8a719b628ac8049344f50b58">GpsInterface</a>
|
||||||
|
<li>doRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#d82c3e4827f275abf28eb872e8751e1f">android::AudioHardwareInterface</a>
|
||||||
|
<li>download_request_cb
|
||||||
|
: <a class="el" href="struct_gps_xtra_callbacks.html#7e879ba4c3e32c52eaa0fb04fb9c226f">GpsXtraCallbacks</a>
|
||||||
|
<li>dump()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#371f198a416cb726804e0f47e8763217">android::AudioHardwareInterface</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#18c3760208bfb99498715a0d4977f675">android::AudioStreamIn</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_out.html#97e3cc4610ba40d6c37b3d376a032b98">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_camera_hardware_interface.html#06df1bf91b8af07964dca314a6031b32">android::CameraHardwareInterface</a>
|
||||||
|
<li>dumpState()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#05f035af60e67a22251175b44a089f69">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
|
||||||
|
<li>elevation
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#0634009d0476b2f06f27568b0722a04d">GpsSvInfo</a>
|
||||||
|
<li>ephemeris_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#4751f70f8e275241dece99db0df4ab5b">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
|
||||||
|
<li>flags
|
||||||
|
: <a class="el" href="struct_gps_location.html#07d55fee34dc28cff50062e9ac42c717">GpsLocation</a>
|
||||||
|
<li>format()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#eb2b430bbff4eebd8fb8590507b1dce1">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#4ade98c5243b9ed5f3a71a8f36e74b36">android::AudioStreamIn</a>
|
||||||
|
<li>frameSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#66b7c4bb510db4060adfd03a376897d8">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#43d2c6b97806c005f0717a7bb6f7595c">android::AudioStreamIn</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
|
||||||
|
<li>get_extension
|
||||||
|
: <a class="el" href="struct_gps_interface.html#19af32bd9d01ebbcdb196e36514b0e98">GpsInterface</a>
|
||||||
|
<li>getInputBufferSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#19f68d873b2a6e4c00c017c580170395">android::AudioHardwareInterface</a>
|
||||||
|
<li>getMicMute()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#15d3c33d7e3f965dc2588c537f05a133">android::AudioHardwareInterface</a>
|
||||||
|
<li>getMode()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#8466c76328a51b8a83da103032abba55">android::AudioHardwareInterface</a>
|
||||||
|
<li>getParameters()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#4c748a3c0aa3c5f2333e0abcdbeb15cb">android::CameraHardwareInterface</a>
|
||||||
|
<li>getPreviewHeap()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#9d4071fb234a0c2e7bf6ea78e723f2f4">android::CameraHardwareInterface</a>
|
||||||
|
<li>getRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#1886de8fff2342ae628dbbbc0c45ba83">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
|
||||||
|
<li>init
|
||||||
|
: <a class="el" href="struct_gps_interface.html#d5139fa13b75108bdedd8a2717f37135">GpsInterface</a>
|
||||||
|
, <a class="el" href="struct_gps_xtra_interface.html#5532e662c68e1d3df7db86570df96bf0">GpsXtraInterface</a>
|
||||||
|
<li>initCheck()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#b7e19e09fa6cbc07c127122fa9866c50">android::AudioHardwareInterface</a>
|
||||||
|
<li>inject_time
|
||||||
|
: <a class="el" href="struct_gps_interface.html#e731891e96a916271a4275eaaea47ad8">GpsInterface</a>
|
||||||
|
<li>inject_xtra_data
|
||||||
|
: <a class="el" href="struct_gps_xtra_interface.html#2b1962c8a5a2751702937cf469dc7435">GpsXtraInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
|
||||||
|
<li>latency()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#c698a3d95cf0829dcfe283cd5ea437cb">android::AudioStreamOut</a>
|
||||||
|
<li>latitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#3a7da06efae47c66428fa2815a3eb4bd">GpsLocation</a>
|
||||||
|
<li>location_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#1f59b4f8eeaca50620f94761536dabd3">GpsCallbacks</a>
|
||||||
|
<li>longitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#3672d2d19087d62d7ea9b0b71418da40">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
|
||||||
|
<li>num_svs
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#b90eb63a499039de996c95d98afad545">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
|
||||||
|
<li>openInputStream()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#efb777d192fcbcd65458fa4f2d976476">android::AudioHardwareInterface</a>
|
||||||
|
<li>openOutputStream()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#eda0986e145c8dd68d21cb79051f94f9">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
|
||||||
|
<li>prn
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#5c94e86f2efc3ed08fb5a40735a2440b">GpsSvInfo</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
|
||||||
|
<li>read()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#7c313cbfbb47dafd90f3225bcd26e592">android::AudioStreamIn</a>
|
||||||
|
<li>release()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#df65310b8aa176e0ce5f08b87d6b7eb8">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
|
||||||
|
<li>sampleRate()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#6bb028e125d13289f26d3d74f851c921">android::AudioStreamOut</a>
|
||||||
|
<li>set_apn
|
||||||
|
: <a class="el" href="struct_gps_supl_interface.html#145834775007930d644086393a6b9dce">GpsSuplInterface</a>
|
||||||
|
<li>set_fix_frequency
|
||||||
|
: <a class="el" href="struct_gps_interface.html#1e727f5862ae7132f12af44ebdfa76b2">GpsInterface</a>
|
||||||
|
<li>set_position_mode
|
||||||
|
: <a class="el" href="struct_gps_interface.html#924bff47462a773b669d310d87b75734">GpsInterface</a>
|
||||||
|
<li>setGain()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#339822afb3f2f2ac1b4c775d31d12440">android::AudioStreamIn</a>
|
||||||
|
<li>setMasterVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#925092e556eb89f304bcebb09f90c9a3">android::AudioHardwareInterface</a>
|
||||||
|
<li>setMicMute()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#be35b7cb738531939a3ac9abc5514621">android::AudioHardwareInterface</a>
|
||||||
|
<li>setMode()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#aaf2a429c240f00b21836794849b430f">android::AudioHardwareInterface</a>
|
||||||
|
<li>setParameter()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#a1b477901df48b3a27103a77e6bb39c8">android::AudioHardwareInterface</a>
|
||||||
|
<li>setParameters()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#82e54ede14bd263274bbc8777bafc384">android::CameraHardwareInterface</a>
|
||||||
|
<li>setRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#39b2690e19219425b8cff093ef83bfb1">android::AudioHardwareInterface</a>
|
||||||
|
<li>setVoiceVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#7b7418072df1eeaacc89cd0c725755f6">android::AudioHardwareInterface</a>
|
||||||
|
<li>setVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#e6d301925d193c25561b42239c7f44b6">android::AudioStreamOut</a>
|
||||||
|
<li>snr
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#eebf16140beb95390733529bd5e7db58">GpsSvInfo</a>
|
||||||
|
<li>speed
|
||||||
|
: <a class="el" href="struct_gps_location.html#38ae20b9c5e7be995513dce25ed87016">GpsLocation</a>
|
||||||
|
<li>standby()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#93fab46e8afdbaedd4d20cc6ee2b7c41">android::AudioStreamIn</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_hardware_interface.html#61121d365bb4d182bdec2c1b12fb1178">android::AudioHardwareInterface</a>
|
||||||
|
<li>start
|
||||||
|
: <a class="el" href="struct_gps_interface.html#2b212721e0d160e24944330b2d830790">GpsInterface</a>
|
||||||
|
<li>startPreview()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#62def8031dee8bdab7933770708a6312">android::CameraHardwareInterface</a>
|
||||||
|
<li>status
|
||||||
|
: <a class="el" href="struct_gps_status.html#64c9e8cd609d97533bee5c5e8ca78608">GpsStatus</a>
|
||||||
|
<li>status_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#7b15a1bf4f9b989677fef84f4d8141df">GpsCallbacks</a>
|
||||||
|
<li>stop
|
||||||
|
: <a class="el" href="struct_gps_interface.html#d20b0cfcbf976d8cec17bf4ea0a027f1">GpsInterface</a>
|
||||||
|
<li>stopPreview()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#34faa77065f415b93cb1acf84fc788bf">android::CameraHardwareInterface</a>
|
||||||
|
<li>sv_list
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#7a3fe2114e7a603b96fd9675adf0c5b5">GpsSvStatus</a>
|
||||||
|
<li>sv_status_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#fb34f60ad58e80de5c04790b107bb93d">GpsCallbacks</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
|
||||||
|
<li>takePicture()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#2aedf65cad695ce439029f37a7cb66c4">android::CameraHardwareInterface</a>
|
||||||
|
<li>timestamp
|
||||||
|
: <a class="el" href="struct_gps_location.html#3e16861f64869d6f0e15e4300bb2658b">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
|
||||||
|
<li>used_in_fix_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#9090a26639d97eec2b59bcd0446659c0">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
|
||||||
|
<li>write()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#cba177e4a4a35a87ab9f8aa2a9c0e78e">android::AudioStreamOut</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
|
||||||
|
<li>~AudioStreamIn()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#72067577568bbdd0163c1369fe80f101">android::AudioStreamIn</a>
|
||||||
|
<li>~AudioStreamOut()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#09074dbae95b82d4f83c513035a0034f">android::AudioStreamOut</a>
|
||||||
|
<li>~CameraHardwareInterface()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#99f4ab74b58cd4b23e0fb00a46a60cb1">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
179
pdk/docs/functions_func.html
Executable file
@@ -0,0 +1,179 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="functions.html"><span>All</span></a></li>
|
||||||
|
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
|
||||||
|
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#index_a"><span>a</span></a></li>
|
||||||
|
<li><a href="#index_b"><span>b</span></a></li>
|
||||||
|
<li><a href="#index_c"><span>c</span></a></li>
|
||||||
|
<li><a href="#index_d"><span>d</span></a></li>
|
||||||
|
<li><a href="#index_f"><span>f</span></a></li>
|
||||||
|
<li><a href="#index_g"><span>g</span></a></li>
|
||||||
|
<li><a href="#index_i"><span>i</span></a></li>
|
||||||
|
<li><a href="#index_l"><span>l</span></a></li>
|
||||||
|
<li><a href="#index_o"><span>o</span></a></li>
|
||||||
|
<li><a href="#index_r"><span>r</span></a></li>
|
||||||
|
<li><a href="#index_s"><span>s</span></a></li>
|
||||||
|
<li><a href="#index_t"><span>t</span></a></li>
|
||||||
|
<li><a href="#index_w"><span>w</span></a></li>
|
||||||
|
<li><a href="#index_~"><span>~</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
|
||||||
|
<li>autoFocus()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#0dda73938e9b18326dd48bd721dbd515">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
|
||||||
|
<li>bufferSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#7b3c5f2ce79b9b6f167408f63d19af0a">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#a458f9cde3edde82f256af7eaa7b2ddf">android::AudioStreamIn</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
|
||||||
|
<li>cancelPicture()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#da8faf376215a605357d26afa1b79386">android::CameraHardwareInterface</a>
|
||||||
|
<li>channelCount()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#4e880a5379c168e8f68c26827e41275b">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#04f84006dd5f2e0a5e512897a039f851">android::AudioStreamIn</a>
|
||||||
|
<li>create()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#aa5ae45e9ad969fefc494e103cf5068d">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
|
||||||
|
<li>doRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#d82c3e4827f275abf28eb872e8751e1f">android::AudioHardwareInterface</a>
|
||||||
|
<li>dump()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#97e3cc4610ba40d6c37b3d376a032b98">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_camera_hardware_interface.html#06df1bf91b8af07964dca314a6031b32">android::CameraHardwareInterface</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_hardware_interface.html#371f198a416cb726804e0f47e8763217">android::AudioHardwareInterface</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#18c3760208bfb99498715a0d4977f675">android::AudioStreamIn</a>
|
||||||
|
<li>dumpState()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#05f035af60e67a22251175b44a089f69">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
|
||||||
|
<li>format()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#eb2b430bbff4eebd8fb8590507b1dce1">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#4ade98c5243b9ed5f3a71a8f36e74b36">android::AudioStreamIn</a>
|
||||||
|
<li>frameSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#66b7c4bb510db4060adfd03a376897d8">android::AudioStreamOut</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#43d2c6b97806c005f0717a7bb6f7595c">android::AudioStreamIn</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
|
||||||
|
<li>getInputBufferSize()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#19f68d873b2a6e4c00c017c580170395">android::AudioHardwareInterface</a>
|
||||||
|
<li>getMicMute()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#15d3c33d7e3f965dc2588c537f05a133">android::AudioHardwareInterface</a>
|
||||||
|
<li>getMode()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#8466c76328a51b8a83da103032abba55">android::AudioHardwareInterface</a>
|
||||||
|
<li>getParameters()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#4c748a3c0aa3c5f2333e0abcdbeb15cb">android::CameraHardwareInterface</a>
|
||||||
|
<li>getPreviewHeap()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#9d4071fb234a0c2e7bf6ea78e723f2f4">android::CameraHardwareInterface</a>
|
||||||
|
<li>getRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#1886de8fff2342ae628dbbbc0c45ba83">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
|
||||||
|
<li>initCheck()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#b7e19e09fa6cbc07c127122fa9866c50">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
|
||||||
|
<li>latency()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#c698a3d95cf0829dcfe283cd5ea437cb">android::AudioStreamOut</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
|
||||||
|
<li>openInputStream()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#efb777d192fcbcd65458fa4f2d976476">android::AudioHardwareInterface</a>
|
||||||
|
<li>openOutputStream()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#eda0986e145c8dd68d21cb79051f94f9">android::AudioHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
|
||||||
|
<li>read()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#7c313cbfbb47dafd90f3225bcd26e592">android::AudioStreamIn</a>
|
||||||
|
<li>release()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#df65310b8aa176e0ce5f08b87d6b7eb8">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
|
||||||
|
<li>sampleRate()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#6bb028e125d13289f26d3d74f851c921">android::AudioStreamOut</a>
|
||||||
|
<li>setGain()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#339822afb3f2f2ac1b4c775d31d12440">android::AudioStreamIn</a>
|
||||||
|
<li>setMasterVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#925092e556eb89f304bcebb09f90c9a3">android::AudioHardwareInterface</a>
|
||||||
|
<li>setMicMute()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#be35b7cb738531939a3ac9abc5514621">android::AudioHardwareInterface</a>
|
||||||
|
<li>setMode()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#aaf2a429c240f00b21836794849b430f">android::AudioHardwareInterface</a>
|
||||||
|
<li>setParameter()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#a1b477901df48b3a27103a77e6bb39c8">android::AudioHardwareInterface</a>
|
||||||
|
<li>setParameters()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#82e54ede14bd263274bbc8777bafc384">android::CameraHardwareInterface</a>
|
||||||
|
<li>setRouting()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#39b2690e19219425b8cff093ef83bfb1">android::AudioHardwareInterface</a>
|
||||||
|
<li>setVoiceVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#7b7418072df1eeaacc89cd0c725755f6">android::AudioHardwareInterface</a>
|
||||||
|
<li>setVolume()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#e6d301925d193c25561b42239c7f44b6">android::AudioStreamOut</a>
|
||||||
|
<li>standby()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_hardware_interface.html#61121d365bb4d182bdec2c1b12fb1178">android::AudioHardwareInterface</a>
|
||||||
|
, <a class="el" href="classandroid_1_1_audio_stream_in.html#93fab46e8afdbaedd4d20cc6ee2b7c41">android::AudioStreamIn</a>
|
||||||
|
<li>startPreview()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#62def8031dee8bdab7933770708a6312">android::CameraHardwareInterface</a>
|
||||||
|
<li>stopPreview()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#34faa77065f415b93cb1acf84fc788bf">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
|
||||||
|
<li>takePicture()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#2aedf65cad695ce439029f37a7cb66c4">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
|
||||||
|
<li>write()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#cba177e4a4a35a87ab9f8aa2a9c0e78e">android::AudioStreamOut</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
|
||||||
|
<li>~AudioStreamIn()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_in.html#72067577568bbdd0163c1369fe80f101">android::AudioStreamIn</a>
|
||||||
|
<li>~AudioStreamOut()
|
||||||
|
: <a class="el" href="classandroid_1_1_audio_stream_out.html#09074dbae95b82d4f83c513035a0034f">android::AudioStreamOut</a>
|
||||||
|
<li>~CameraHardwareInterface()
|
||||||
|
: <a class="el" href="classandroid_1_1_camera_hardware_interface.html#99f4ab74b58cd4b23e0fb00a46a60cb1">android::CameraHardwareInterface</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
158
pdk/docs/functions_vars.html
Executable file
@@ -0,0 +1,158 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="functions.html"><span>All</span></a></li>
|
||||||
|
<li><a href="functions_func.html"><span>Functions</span></a></li>
|
||||||
|
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#index_a"><span>a</span></a></li>
|
||||||
|
<li><a href="#index_b"><span>b</span></a></li>
|
||||||
|
<li><a href="#index_c"><span>c</span></a></li>
|
||||||
|
<li><a href="#index_d"><span>d</span></a></li>
|
||||||
|
<li><a href="#index_e"><span>e</span></a></li>
|
||||||
|
<li><a href="#index_f"><span>f</span></a></li>
|
||||||
|
<li><a href="#index_g"><span>g</span></a></li>
|
||||||
|
<li><a href="#index_i"><span>i</span></a></li>
|
||||||
|
<li><a href="#index_l"><span>l</span></a></li>
|
||||||
|
<li><a href="#index_n"><span>n</span></a></li>
|
||||||
|
<li><a href="#index_p"><span>p</span></a></li>
|
||||||
|
<li><a href="#index_s"><span>s</span></a></li>
|
||||||
|
<li><a href="#index_t"><span>t</span></a></li>
|
||||||
|
<li><a href="#index_u"><span>u</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
|
||||||
|
<li>accuracy
|
||||||
|
: <a class="el" href="struct_gps_location.html#801ec0db8ee69fa263a63528876d773b">GpsLocation</a>
|
||||||
|
<li>almanac_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#6ed4b741a9882ecc2852e94e8ad60310">GpsSvStatus</a>
|
||||||
|
<li>altitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#cb3cc5ad378a6a3864e47ae67df38778">GpsLocation</a>
|
||||||
|
<li>azimuth
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#94755ad36e31a012269459d5a4ef0594">GpsSvInfo</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
|
||||||
|
<li>bearing
|
||||||
|
: <a class="el" href="struct_gps_location.html#b71bf9b61cf55f10ffcf34ba1654d082">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
|
||||||
|
<li>cleanup
|
||||||
|
: <a class="el" href="struct_gps_interface.html#2911808e36c70259dc0db162de02dc13">GpsInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
|
||||||
|
<li>delete_aiding_data
|
||||||
|
: <a class="el" href="struct_gps_interface.html#a3a9b81a8a719b628ac8049344f50b58">GpsInterface</a>
|
||||||
|
<li>download_request_cb
|
||||||
|
: <a class="el" href="struct_gps_xtra_callbacks.html#7e879ba4c3e32c52eaa0fb04fb9c226f">GpsXtraCallbacks</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
|
||||||
|
<li>elevation
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#0634009d0476b2f06f27568b0722a04d">GpsSvInfo</a>
|
||||||
|
<li>ephemeris_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#4751f70f8e275241dece99db0df4ab5b">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
|
||||||
|
<li>flags
|
||||||
|
: <a class="el" href="struct_gps_location.html#07d55fee34dc28cff50062e9ac42c717">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
|
||||||
|
<li>get_extension
|
||||||
|
: <a class="el" href="struct_gps_interface.html#19af32bd9d01ebbcdb196e36514b0e98">GpsInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
|
||||||
|
<li>init
|
||||||
|
: <a class="el" href="struct_gps_interface.html#d5139fa13b75108bdedd8a2717f37135">GpsInterface</a>
|
||||||
|
, <a class="el" href="struct_gps_xtra_interface.html#5532e662c68e1d3df7db86570df96bf0">GpsXtraInterface</a>
|
||||||
|
<li>inject_time
|
||||||
|
: <a class="el" href="struct_gps_interface.html#e731891e96a916271a4275eaaea47ad8">GpsInterface</a>
|
||||||
|
<li>inject_xtra_data
|
||||||
|
: <a class="el" href="struct_gps_xtra_interface.html#2b1962c8a5a2751702937cf469dc7435">GpsXtraInterface</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
|
||||||
|
<li>latitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#3a7da06efae47c66428fa2815a3eb4bd">GpsLocation</a>
|
||||||
|
<li>location_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#1f59b4f8eeaca50620f94761536dabd3">GpsCallbacks</a>
|
||||||
|
<li>longitude
|
||||||
|
: <a class="el" href="struct_gps_location.html#3672d2d19087d62d7ea9b0b71418da40">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
|
||||||
|
<li>num_svs
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#b90eb63a499039de996c95d98afad545">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
|
||||||
|
<li>prn
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#5c94e86f2efc3ed08fb5a40735a2440b">GpsSvInfo</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
|
||||||
|
<li>set_apn
|
||||||
|
: <a class="el" href="struct_gps_supl_interface.html#145834775007930d644086393a6b9dce">GpsSuplInterface</a>
|
||||||
|
<li>set_fix_frequency
|
||||||
|
: <a class="el" href="struct_gps_interface.html#1e727f5862ae7132f12af44ebdfa76b2">GpsInterface</a>
|
||||||
|
<li>set_position_mode
|
||||||
|
: <a class="el" href="struct_gps_interface.html#924bff47462a773b669d310d87b75734">GpsInterface</a>
|
||||||
|
<li>snr
|
||||||
|
: <a class="el" href="struct_gps_sv_info.html#eebf16140beb95390733529bd5e7db58">GpsSvInfo</a>
|
||||||
|
<li>speed
|
||||||
|
: <a class="el" href="struct_gps_location.html#38ae20b9c5e7be995513dce25ed87016">GpsLocation</a>
|
||||||
|
<li>start
|
||||||
|
: <a class="el" href="struct_gps_interface.html#2b212721e0d160e24944330b2d830790">GpsInterface</a>
|
||||||
|
<li>status
|
||||||
|
: <a class="el" href="struct_gps_status.html#64c9e8cd609d97533bee5c5e8ca78608">GpsStatus</a>
|
||||||
|
<li>status_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#7b15a1bf4f9b989677fef84f4d8141df">GpsCallbacks</a>
|
||||||
|
<li>stop
|
||||||
|
: <a class="el" href="struct_gps_interface.html#d20b0cfcbf976d8cec17bf4ea0a027f1">GpsInterface</a>
|
||||||
|
<li>sv_list
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#7a3fe2114e7a603b96fd9675adf0c5b5">GpsSvStatus</a>
|
||||||
|
<li>sv_status_cb
|
||||||
|
: <a class="el" href="struct_gps_callbacks.html#fb34f60ad58e80de5c04790b107bb93d">GpsCallbacks</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
|
||||||
|
<li>timestamp
|
||||||
|
: <a class="el" href="struct_gps_location.html#3e16861f64869d6f0e15e4300bb2658b">GpsLocation</a>
|
||||||
|
</ul>
|
||||||
|
<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
|
||||||
|
<li>used_in_fix_mask
|
||||||
|
: <a class="el" href="struct_gps_sv_status.html#9090a26639d97eec2b59bcd0446659c0">GpsSvStatus</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Getting Source Code</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20getting_source_code.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20index.html%20v0.5%20-%2025%20September%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,6 +109,7 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -98,12 +117,14 @@ h1,h2,h3 {
|
|||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
||||||
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +132,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -295,7 +329,7 @@ Connection to android-git closed.</code>
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.5 - 25 September 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
91
pdk/docs/globals.html
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="files.html"><span>File List</span></a></li>
|
||||||
|
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li class="current"><a href="globals.html"><span>All</span></a></li>
|
||||||
|
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||||
|
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>do_dhcp_request()
|
||||||
|
: <a class="el" href="wifi_8h.html#c6876a5403aaeee922d000043a47b25a">wifi.h</a>
|
||||||
|
<li>get_dhcp_error_string()
|
||||||
|
: <a class="el" href="wifi_8h.html#8f25ea8ec313efb45affe65fd7c108ee">wifi.h</a>
|
||||||
|
<li>gps_get_hardware_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#6d15bb02f1f91dd760e3e172bd7711a1">gps.h</a>
|
||||||
|
<li>gps_get_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#b582931ddf4bafa2cc5044963be66987">gps.h</a>
|
||||||
|
<li>gps_get_qemu_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#f73f4a220fb97545e81d82fbff54b47e">gps.h</a>
|
||||||
|
<li>gps_location_callback
|
||||||
|
: <a class="el" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae">gps.h</a>
|
||||||
|
<li>gps_status_callback
|
||||||
|
: <a class="el" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412">gps.h</a>
|
||||||
|
<li>gps_sv_status_callback
|
||||||
|
: <a class="el" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9">gps.h</a>
|
||||||
|
<li>gps_xtra_download_request
|
||||||
|
: <a class="el" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515">gps.h</a>
|
||||||
|
<li>GpsAidingData
|
||||||
|
: <a class="el" href="gps_8h.html#93f0283aeabd20211499991a29db7377">gps.h</a>
|
||||||
|
<li>GpsLocationFlags
|
||||||
|
: <a class="el" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31">gps.h</a>
|
||||||
|
<li>GpsPositionMode
|
||||||
|
: <a class="el" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740">gps.h</a>
|
||||||
|
<li>GpsStatusValue
|
||||||
|
: <a class="el" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5">gps.h</a>
|
||||||
|
<li>GpsUtcTime
|
||||||
|
: <a class="el" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15">gps.h</a>
|
||||||
|
<li>wifi_close_supplicant_connection()
|
||||||
|
: <a class="el" href="wifi_8h.html#a3f8c99b26cfd95e90012cae63ec4826">wifi.h</a>
|
||||||
|
<li>wifi_command()
|
||||||
|
: <a class="el" href="wifi_8h.html#b84f92e035b7bc6a5d669b3738c93e32">wifi.h</a>
|
||||||
|
<li>wifi_connect_to_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#d81473c3f314ba581e88bb9f1ae37904">wifi.h</a>
|
||||||
|
<li>wifi_load_driver()
|
||||||
|
: <a class="el" href="wifi_8h.html#ef0be2b5d0603acb8e0ab99051969bb7">wifi.h</a>
|
||||||
|
<li>wifi_start_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#3372e235a7899484912d7f85887e8a47">wifi.h</a>
|
||||||
|
<li>wifi_stop_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#08b97e58f2909489f1f3d59fb31f2c19">wifi.h</a>
|
||||||
|
<li>wifi_unload_driver()
|
||||||
|
: <a class="el" href="wifi_8h.html#a0c054da650a0162e40f327eb05679cb">wifi.h</a>
|
||||||
|
<li>wifi_wait_for_event()
|
||||||
|
: <a class="el" href="wifi_8h.html#656495e1beea1e39a144cdff776cdb96">wifi.h</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
73
pdk/docs/globals_func.html
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="files.html"><span>File List</span></a></li>
|
||||||
|
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="globals.html"><span>All</span></a></li>
|
||||||
|
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
|
||||||
|
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>do_dhcp_request()
|
||||||
|
: <a class="el" href="wifi_8h.html#c6876a5403aaeee922d000043a47b25a">wifi.h</a>
|
||||||
|
<li>get_dhcp_error_string()
|
||||||
|
: <a class="el" href="wifi_8h.html#8f25ea8ec313efb45affe65fd7c108ee">wifi.h</a>
|
||||||
|
<li>gps_get_hardware_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#6d15bb02f1f91dd760e3e172bd7711a1">gps.h</a>
|
||||||
|
<li>gps_get_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#b582931ddf4bafa2cc5044963be66987">gps.h</a>
|
||||||
|
<li>gps_get_qemu_interface()
|
||||||
|
: <a class="el" href="gps_8h.html#f73f4a220fb97545e81d82fbff54b47e">gps.h</a>
|
||||||
|
<li>wifi_close_supplicant_connection()
|
||||||
|
: <a class="el" href="wifi_8h.html#a3f8c99b26cfd95e90012cae63ec4826">wifi.h</a>
|
||||||
|
<li>wifi_command()
|
||||||
|
: <a class="el" href="wifi_8h.html#b84f92e035b7bc6a5d669b3738c93e32">wifi.h</a>
|
||||||
|
<li>wifi_connect_to_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#d81473c3f314ba581e88bb9f1ae37904">wifi.h</a>
|
||||||
|
<li>wifi_load_driver()
|
||||||
|
: <a class="el" href="wifi_8h.html#ef0be2b5d0603acb8e0ab99051969bb7">wifi.h</a>
|
||||||
|
<li>wifi_start_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#3372e235a7899484912d7f85887e8a47">wifi.h</a>
|
||||||
|
<li>wifi_stop_supplicant()
|
||||||
|
: <a class="el" href="wifi_8h.html#08b97e58f2909489f1f3d59fb31f2c19">wifi.h</a>
|
||||||
|
<li>wifi_unload_driver()
|
||||||
|
: <a class="el" href="wifi_8h.html#a0c054da650a0162e40f327eb05679cb">wifi.h</a>
|
||||||
|
<li>wifi_wait_for_event()
|
||||||
|
: <a class="el" href="wifi_8h.html#656495e1beea1e39a144cdff776cdb96">wifi.h</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
65
pdk/docs/globals_type.html
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="files.html"><span>File List</span></a></li>
|
||||||
|
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="globals.html"><span>All</span></a></li>
|
||||||
|
<li><a href="globals_func.html"><span>Functions</span></a></li>
|
||||||
|
<li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>gps_location_callback
|
||||||
|
: <a class="el" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae">gps.h</a>
|
||||||
|
<li>gps_status_callback
|
||||||
|
: <a class="el" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412">gps.h</a>
|
||||||
|
<li>gps_sv_status_callback
|
||||||
|
: <a class="el" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9">gps.h</a>
|
||||||
|
<li>gps_xtra_download_request
|
||||||
|
: <a class="el" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515">gps.h</a>
|
||||||
|
<li>GpsAidingData
|
||||||
|
: <a class="el" href="gps_8h.html#93f0283aeabd20211499991a29db7377">gps.h</a>
|
||||||
|
<li>GpsLocationFlags
|
||||||
|
: <a class="el" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31">gps.h</a>
|
||||||
|
<li>GpsPositionMode
|
||||||
|
: <a class="el" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740">gps.h</a>
|
||||||
|
<li>GpsStatusValue
|
||||||
|
: <a class="el" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5">gps.h</a>
|
||||||
|
<li>GpsUtcTime
|
||||||
|
: <a class="el" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15">gps.h</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
259
pdk/docs/gps.html
Executable file
@@ -0,0 +1,259 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
|
<title>Android - Porting Guide</title>
|
||||||
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
|
||||||
|
<script src="http://code.google.com/android/assets/search_autocomplete.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" />
|
||||||
|
<script>
|
||||||
|
jQuery(document).ready(function() {
|
||||||
|
jQuery("pre").addClass("prettyprint");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
h1,h2,h3 {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body class="gc-documentation">
|
||||||
|
<div id="gc-container">
|
||||||
|
<a name="top"></a>
|
||||||
|
<div id="skipto"> </div>
|
||||||
|
<div id="langpref">
|
||||||
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="gc-header">
|
||||||
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
|
<div id="search" style="inline">
|
||||||
|
<div id="searchForm" class="searchForm" style="height: 44px;">
|
||||||
|
<!--previously form was here-->
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm -->
|
||||||
|
<noscript>
|
||||||
|
<style type="text/css">
|
||||||
|
.searchForm {
|
||||||
|
display : none !important;
|
||||||
|
}
|
||||||
|
.searchForm2 {
|
||||||
|
display : inline !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
|
<input type="hidden" name="cof" value="FORID:0" />
|
||||||
|
<input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/>
|
||||||
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
|
<br/>
|
||||||
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- end searchForm2 -->
|
||||||
|
</div>
|
||||||
|
<!-- end search -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-header -->
|
||||||
|
<div id="searchControl" class="search-control"></div>
|
||||||
|
<!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]-->
|
||||||
|
<div id="codesiteContent">
|
||||||
|
<a name="gc-topnav-anchor"></a>
|
||||||
|
<div id="gc-topnav">
|
||||||
|
|
||||||
|
<h1>Android Platform Development Kit</h1>
|
||||||
|
<ul class="gc-topnav-tabs">
|
||||||
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20gps.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-topnav -->
|
||||||
|
<div class="g-section g-tpl-180">
|
||||||
|
<a name="gc-toc"></a>
|
||||||
|
<div class="g-unit g-first" id="gc-toc">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
|
<ul>
|
||||||
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
|
<li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
|
||||||
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Multimedia</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Telephony</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li> <strong>Testing</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<a name="gc-pagecontent"></a>
|
||||||
|
<div class="g-unit" id="gc-pagecontent">
|
||||||
|
<div id="jd-content">
|
||||||
|
<div class="jd-descr">
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidGpsTitle"></a><h1>GPS</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="toc"/>
|
||||||
|
<div style="padding:10px">
|
||||||
|
<a href="#androidGpsIntroduction">Introduction</a><br/>
|
||||||
|
<a href="#androidGPSBuildingDriver">Building a GPS Library</a><br/>
|
||||||
|
<a href="#androidGPSInterface">Interface</a><br/></div></font></div>
|
||||||
|
|
||||||
|
<a name="androidGpsIntroduction"></a><h2>Introduction</h2>
|
||||||
|
|
||||||
|
<p>Android defines a user space C abstraction interface for GPS hardware. The interface header is defined in <code>include/hardware/gps.h</code>. In order to integate GPS with Android, you need to build a shared library that implements this interface. </p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidGPSBuildingDriver"></a><h2>Building a GPS Library</h2>
|
||||||
|
|
||||||
|
<p>To implement a GPS driver, create a shared library that implements the interface defined in <code>gps.h</code>. You must name your shared library <code>libgps.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. Place GPS sources and Android.mk in <code>partner/acme/chipset_or_board/gps/</code> (where "acme" is your product name and "chipset_or_board" is your hardware target).</p>
|
||||||
|
|
||||||
|
<p>The following stub <code>Android.mk</code> file ensures that <code>libgps</code> compiles and links to the appropriate libraries:</p>
|
||||||
|
|
||||||
|
<pre class="prettify">
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := libgps
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES:= \
|
||||||
|
# include any static library dependencies
|
||||||
|
|
||||||
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
|
# include any shared library dependencies
|
||||||
|
|
||||||
|
LOCAL_SRC_FILES += \
|
||||||
|
# include your source files. eg. MyGpsLibrary.cpp
|
||||||
|
|
||||||
|
LOCAL_CFLAGS += \
|
||||||
|
# include any needed compile flags
|
||||||
|
|
||||||
|
LOCAL_C_INCLUDES:= \
|
||||||
|
# include any needed local header files
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidGPSInterface"></a><h2>Interface</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p><span class="lh2"><a name="androidDoxygenNote"></a></span>
|
||||||
|
|
||||||
|
<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="gps.html">click here</a>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<iframe onLoad="resizeHeight();" src="gps_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-pagecontent -->
|
||||||
|
</div>
|
||||||
|
<!-- end gooey wrapper -->
|
||||||
|
</div>
|
||||||
|
<!-- end codesearchresults -->
|
||||||
|
<div id="gc-footer" dir="ltr">
|
||||||
|
<div class="text"> ©2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>
|
||||||
|
</div>
|
||||||
|
<!-- end gc-footer -->
|
||||||
|
</div>
|
||||||
|
<!-- end gc-containter -->
|
||||||
|
<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
try {
|
||||||
|
var pageTracker = _gat._getTracker("UA-18071-1");
|
||||||
|
pageTracker._setAllowAnchor(true);
|
||||||
|
pageTracker._initData();
|
||||||
|
pageTracker._trackPageview();
|
||||||
|
} catch(e) {}
|
||||||
|
</script>
|
||||||
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
|
</div></div></div></body>
|
||||||
|
</html>
|
||||||
|
|
||||||
298
pdk/docs/gps_8h-source.html
Executable file
@@ -0,0 +1,298 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1>gps.h</h1><a href="gps_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
|
||||||
|
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008 The Android Open Source Project</span>
|
||||||
|
<a name="l00003"></a>00003 <span class="comment"> *</span>
|
||||||
|
<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
|
||||||
|
<a name="l00007"></a>00007 <span class="comment"> *</span>
|
||||||
|
<a name="l00008"></a>00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
|
||||||
|
<a name="l00009"></a>00009 <span class="comment"> *</span>
|
||||||
|
<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
|
||||||
|
<a name="l00015"></a>00015 <span class="comment"> */</span>
|
||||||
|
<a name="l00016"></a>00016
|
||||||
|
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef _HARDWARE_GPS_H</span>
|
||||||
|
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define _HARDWARE_GPS_H</span>
|
||||||
|
<a name="l00019"></a>00019 <span class="preprocessor"></span>
|
||||||
|
<a name="l00020"></a>00020 <span class="preprocessor">#include <stdint.h></span>
|
||||||
|
<a name="l00021"></a>00021
|
||||||
|
<a name="l00022"></a>00022 <span class="preprocessor">#if __cplusplus</span>
|
||||||
|
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
|
||||||
|
<a name="l00024"></a>00024 <span class="preprocessor">#endif</span>
|
||||||
|
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00026"></a>00026 <span class="comment">/** Milliseconds since January 1, 1970 */</span>
|
||||||
|
<a name="l00027"></a><a class="code" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15">00027</a> <span class="keyword">typedef</span> int64_t <a class="code" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15" title="Milliseconds since January 1, 1970.">GpsUtcTime</a>;
|
||||||
|
<a name="l00028"></a>00028 <span class="comment"></span>
|
||||||
|
<a name="l00029"></a>00029 <span class="comment">/** Maximum number of SVs for gps_sv_status_callback(). */</span>
|
||||||
|
<a name="l00030"></a>00030 <span class="preprocessor">#define GPS_MAX_SVS 32</span>
|
||||||
|
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00032"></a>00032 <span class="comment">/** Requested mode for GPS operation. */</span>
|
||||||
|
<a name="l00033"></a><a class="code" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740">00033</a> <span class="keyword">typedef</span> uint16_t <a class="code" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740" title="Requested mode for GPS operation.">GpsPositionMode</a>;
|
||||||
|
<a name="l00034"></a>00034 <span class="comment">// IMPORTANT: Note that the following values must match</span>
|
||||||
|
<a name="l00035"></a>00035 <span class="comment">// constants in GpsLocationProvider.java.</span><span class="comment"></span>
|
||||||
|
<a name="l00036"></a>00036 <span class="comment">/** Mode for running GPS standalone (no assistance). */</span>
|
||||||
|
<a name="l00037"></a>00037 <span class="preprocessor">#define GPS_POSITION_MODE_STANDALONE 0</span>
|
||||||
|
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="comment">/** SUPL MS-Based mode. */</span>
|
||||||
|
<a name="l00039"></a>00039 <span class="preprocessor">#define GPS_POSITION_MODE_MS_BASED 1</span>
|
||||||
|
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="comment">/** SUPL MS-Assisted mode. */</span>
|
||||||
|
<a name="l00041"></a>00041 <span class="preprocessor">#define GPS_POSITION_MODE_MS_ASSISTED 2</span>
|
||||||
|
<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00043"></a>00043 <span class="comment">/** GPS status event values. */</span>
|
||||||
|
<a name="l00044"></a><a class="code" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5">00044</a> <span class="keyword">typedef</span> uint16_t <a class="code" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5" title="GPS status event values.">GpsStatusValue</a>;
|
||||||
|
<a name="l00045"></a>00045 <span class="comment">// IMPORTANT: Note that the following values must match</span>
|
||||||
|
<a name="l00046"></a>00046 <span class="comment">// constants in GpsLocationProvider.java.</span><span class="comment"></span>
|
||||||
|
<a name="l00047"></a>00047 <span class="comment">/** GPS status unknown. */</span>
|
||||||
|
<a name="l00048"></a>00048 <span class="preprocessor">#define GPS_STATUS_NONE 0</span>
|
||||||
|
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="comment">/** GPS has begun navigating. */</span>
|
||||||
|
<a name="l00050"></a>00050 <span class="preprocessor">#define GPS_STATUS_SESSION_BEGIN 1</span>
|
||||||
|
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="comment">/** GPS has stopped navigating. */</span>
|
||||||
|
<a name="l00052"></a>00052 <span class="preprocessor">#define GPS_STATUS_SESSION_END 2</span>
|
||||||
|
<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="comment">/** GPS has powered on but is not navigating. */</span>
|
||||||
|
<a name="l00054"></a>00054 <span class="preprocessor">#define GPS_STATUS_ENGINE_ON 3</span>
|
||||||
|
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="comment">/** GPS is powered off. */</span>
|
||||||
|
<a name="l00056"></a>00056 <span class="preprocessor">#define GPS_STATUS_ENGINE_OFF 4</span>
|
||||||
|
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00058"></a>00058 <span class="comment">/** Flags to indicate which values are valid in a GpsLocation. */</span>
|
||||||
|
<a name="l00059"></a><a class="code" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31">00059</a> <span class="keyword">typedef</span> uint16_t <a class="code" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31" title="Flags to indicate which values are valid in a GpsLocation.">GpsLocationFlags</a>;
|
||||||
|
<a name="l00060"></a>00060 <span class="comment">// IMPORTANT: Note that the following values must match</span>
|
||||||
|
<a name="l00061"></a>00061 <span class="comment">// constants in GpsLocationProvider.java.</span><span class="comment"></span>
|
||||||
|
<a name="l00062"></a>00062 <span class="comment">/** GpsLocation has valid latitude and longitude. */</span>
|
||||||
|
<a name="l00063"></a>00063 <span class="preprocessor">#define GPS_LOCATION_HAS_LAT_LONG 0x0001</span>
|
||||||
|
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="comment">/** GpsLocation has valid altitude. */</span>
|
||||||
|
<a name="l00065"></a>00065 <span class="preprocessor">#define GPS_LOCATION_HAS_ALTITUDE 0x0002</span>
|
||||||
|
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="comment">/** GpsLocation has valid speed. */</span>
|
||||||
|
<a name="l00067"></a>00067 <span class="preprocessor">#define GPS_LOCATION_HAS_SPEED 0x0004</span>
|
||||||
|
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="comment">/** GpsLocation has valid bearing. */</span>
|
||||||
|
<a name="l00069"></a>00069 <span class="preprocessor">#define GPS_LOCATION_HAS_BEARING 0x0008</span>
|
||||||
|
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="comment">/** GpsLocation has valid accuracy. */</span>
|
||||||
|
<a name="l00071"></a>00071 <span class="preprocessor">#define GPS_LOCATION_HAS_ACCURACY 0x0010</span>
|
||||||
|
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00073"></a>00073 <span class="comment">/** Flags used to specify which aiding data to delete</span>
|
||||||
|
<a name="l00074"></a>00074 <span class="comment"> when calling delete_aiding_data(). */</span>
|
||||||
|
<a name="l00075"></a><a class="code" href="gps_8h.html#93f0283aeabd20211499991a29db7377">00075</a> <span class="keyword">typedef</span> uint16_t <a class="code" href="gps_8h.html#93f0283aeabd20211499991a29db7377" title="Flags used to specify which aiding data to delete when calling delete_aiding_data()...">GpsAidingData</a>;
|
||||||
|
<a name="l00076"></a>00076 <span class="comment">// IMPORTANT: Note that the following values must match</span>
|
||||||
|
<a name="l00077"></a>00077 <span class="comment">// constants in GpsLocationProvider.java.</span>
|
||||||
|
<a name="l00078"></a>00078 <span class="preprocessor">#define GPS_DELETE_EPHEMERIS 0x0001</span>
|
||||||
|
<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_ALMANAC 0x0002</span>
|
||||||
|
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_POSITION 0x0004</span>
|
||||||
|
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_TIME 0x0008</span>
|
||||||
|
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_IONO 0x0010</span>
|
||||||
|
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_UTC 0x0020</span>
|
||||||
|
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_HEALTH 0x0040</span>
|
||||||
|
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_SVDIR 0x0080</span>
|
||||||
|
<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_SVSTEER 0x0100</span>
|
||||||
|
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_SADATA 0x0200</span>
|
||||||
|
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_RTI 0x0400</span>
|
||||||
|
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_CELLDB_INFO 0x8000</span>
|
||||||
|
<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define GPS_DELETE_ALL 0xFFFF</span>
|
||||||
|
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00092"></a>00092 <span class="comment">/**</span>
|
||||||
|
<a name="l00093"></a>00093 <span class="comment"> * Name for the GPS XTRA interface.</span>
|
||||||
|
<a name="l00094"></a>00094 <span class="comment"> */</span>
|
||||||
|
<a name="l00095"></a>00095 <span class="preprocessor">#define GPS_XTRA_INTERFACE "gps-xtra"</span>
|
||||||
|
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00097"></a>00097 <span class="comment">/**</span>
|
||||||
|
<a name="l00098"></a>00098 <span class="comment"> * Name for the GPS SUPL interface.</span>
|
||||||
|
<a name="l00099"></a>00099 <span class="comment"> */</span>
|
||||||
|
<a name="l00100"></a>00100 <span class="preprocessor">#define GPS_SUPL_INTERFACE "gps-supl"</span>
|
||||||
|
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="comment"></span>
|
||||||
|
<a name="l00102"></a>00102 <span class="comment">/** Represents a location. */</span>
|
||||||
|
<a name="l00103"></a><a class="code" href="struct_gps_location.html">00103</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00104"></a>00104 <span class="comment"> /** Contains GpsLocationFlags bits. */</span>
|
||||||
|
<a name="l00105"></a><a class="code" href="struct_gps_location.html#07d55fee34dc28cff50062e9ac42c717">00105</a> uint16_t flags;<span class="comment"></span>
|
||||||
|
<a name="l00106"></a>00106 <span class="comment"> /** Represents latitude in degrees. */</span>
|
||||||
|
<a name="l00107"></a><a class="code" href="struct_gps_location.html#3a7da06efae47c66428fa2815a3eb4bd">00107</a> <span class="keywordtype">double</span> latitude;<span class="comment"></span>
|
||||||
|
<a name="l00108"></a>00108 <span class="comment"> /** Represents longitude in degrees. */</span>
|
||||||
|
<a name="l00109"></a><a class="code" href="struct_gps_location.html#3672d2d19087d62d7ea9b0b71418da40">00109</a> <span class="keywordtype">double</span> longitude;<span class="comment"></span>
|
||||||
|
<a name="l00110"></a>00110 <span class="comment"> /** Represents altitude in meters above the WGS 84 reference</span>
|
||||||
|
<a name="l00111"></a>00111 <span class="comment"> * ellipsoid. */</span>
|
||||||
|
<a name="l00112"></a><a class="code" href="struct_gps_location.html#cb3cc5ad378a6a3864e47ae67df38778">00112</a> <span class="keywordtype">double</span> altitude;<span class="comment"></span>
|
||||||
|
<a name="l00113"></a>00113 <span class="comment"> /** Represents speed in meters per second. */</span>
|
||||||
|
<a name="l00114"></a><a class="code" href="struct_gps_location.html#38ae20b9c5e7be995513dce25ed87016">00114</a> <span class="keywordtype">float</span> speed;<span class="comment"></span>
|
||||||
|
<a name="l00115"></a>00115 <span class="comment"> /** Represents heading in degrees. */</span>
|
||||||
|
<a name="l00116"></a><a class="code" href="struct_gps_location.html#b71bf9b61cf55f10ffcf34ba1654d082">00116</a> <span class="keywordtype">float</span> bearing;<span class="comment"></span>
|
||||||
|
<a name="l00117"></a>00117 <span class="comment"> /** Represents expected accuracy in meters. */</span>
|
||||||
|
<a name="l00118"></a><a class="code" href="struct_gps_location.html#801ec0db8ee69fa263a63528876d773b">00118</a> <span class="keywordtype">float</span> accuracy;<span class="comment"></span>
|
||||||
|
<a name="l00119"></a>00119 <span class="comment"> /** Timestamp for the location fix. */</span>
|
||||||
|
<a name="l00120"></a><a class="code" href="struct_gps_location.html#3e16861f64869d6f0e15e4300bb2658b">00120</a> GpsUtcTime timestamp;
|
||||||
|
<a name="l00121"></a>00121 } <a class="code" href="struct_gps_location.html" title="Represents a location.">GpsLocation</a>;
|
||||||
|
<a name="l00122"></a>00122 <span class="comment"></span>
|
||||||
|
<a name="l00123"></a>00123 <span class="comment">/** Represents the status. */</span>
|
||||||
|
<a name="l00124"></a><a class="code" href="struct_gps_status.html">00124</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
|
||||||
|
<a name="l00125"></a><a class="code" href="struct_gps_status.html#64c9e8cd609d97533bee5c5e8ca78608">00125</a> GpsStatusValue status;
|
||||||
|
<a name="l00126"></a>00126 } <a class="code" href="struct_gps_status.html" title="Represents the status.">GpsStatus</a>;
|
||||||
|
<a name="l00127"></a>00127 <span class="comment"></span>
|
||||||
|
<a name="l00128"></a>00128 <span class="comment">/** Represents SV information. */</span>
|
||||||
|
<a name="l00129"></a><a class="code" href="struct_gps_sv_info.html">00129</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00130"></a>00130 <span class="comment"> /** Pseudo-random number for the SV. */</span>
|
||||||
|
<a name="l00131"></a><a class="code" href="struct_gps_sv_info.html#5c94e86f2efc3ed08fb5a40735a2440b">00131</a> <span class="keywordtype">int</span> prn;<span class="comment"></span>
|
||||||
|
<a name="l00132"></a>00132 <span class="comment"> /** Signal to noise ratio. */</span>
|
||||||
|
<a name="l00133"></a><a class="code" href="struct_gps_sv_info.html#eebf16140beb95390733529bd5e7db58">00133</a> <span class="keywordtype">float</span> snr;<span class="comment"></span>
|
||||||
|
<a name="l00134"></a>00134 <span class="comment"> /** Elevation of SV in degrees. */</span>
|
||||||
|
<a name="l00135"></a><a class="code" href="struct_gps_sv_info.html#0634009d0476b2f06f27568b0722a04d">00135</a> <span class="keywordtype">float</span> elevation;<span class="comment"></span>
|
||||||
|
<a name="l00136"></a>00136 <span class="comment"> /** Azimuth of SV in degrees. */</span>
|
||||||
|
<a name="l00137"></a><a class="code" href="struct_gps_sv_info.html#94755ad36e31a012269459d5a4ef0594">00137</a> <span class="keywordtype">float</span> azimuth;
|
||||||
|
<a name="l00138"></a>00138 } <a class="code" href="struct_gps_sv_info.html" title="Represents SV information.">GpsSvInfo</a>;
|
||||||
|
<a name="l00139"></a>00139 <span class="comment"></span>
|
||||||
|
<a name="l00140"></a>00140 <span class="comment">/** Represents SV status. */</span>
|
||||||
|
<a name="l00141"></a><a class="code" href="struct_gps_sv_status.html">00141</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00142"></a>00142 <span class="comment"> /** Number of SVs currently visible. */</span>
|
||||||
|
<a name="l00143"></a><a class="code" href="struct_gps_sv_status.html#b90eb63a499039de996c95d98afad545">00143</a> <span class="keywordtype">int</span> num_svs;
|
||||||
|
<a name="l00144"></a>00144 <span class="comment"></span>
|
||||||
|
<a name="l00145"></a>00145 <span class="comment"> /** Contains an array of SV information. */</span>
|
||||||
|
<a name="l00146"></a><a class="code" href="struct_gps_sv_status.html#7a3fe2114e7a603b96fd9675adf0c5b5">00146</a> <a class="code" href="struct_gps_sv_info.html" title="Represents SV information.">GpsSvInfo</a> sv_list[GPS_MAX_SVS];
|
||||||
|
<a name="l00147"></a>00147 <span class="comment"></span>
|
||||||
|
<a name="l00148"></a>00148 <span class="comment"> /** Represents a bit mask indicating which SVs</span>
|
||||||
|
<a name="l00149"></a>00149 <span class="comment"> * have ephemeris data.</span>
|
||||||
|
<a name="l00150"></a>00150 <span class="comment"> */</span>
|
||||||
|
<a name="l00151"></a><a class="code" href="struct_gps_sv_status.html#4751f70f8e275241dece99db0df4ab5b">00151</a> uint32_t ephemeris_mask;
|
||||||
|
<a name="l00152"></a>00152 <span class="comment"></span>
|
||||||
|
<a name="l00153"></a>00153 <span class="comment"> /** Represents a bit mask indicating which SVs</span>
|
||||||
|
<a name="l00154"></a>00154 <span class="comment"> * have almanac data.</span>
|
||||||
|
<a name="l00155"></a>00155 <span class="comment"> */</span>
|
||||||
|
<a name="l00156"></a><a class="code" href="struct_gps_sv_status.html#6ed4b741a9882ecc2852e94e8ad60310">00156</a> uint32_t almanac_mask;
|
||||||
|
<a name="l00157"></a>00157 <span class="comment"></span>
|
||||||
|
<a name="l00158"></a>00158 <span class="comment"> /**</span>
|
||||||
|
<a name="l00159"></a>00159 <span class="comment"> * Represents a bit mask indicating which SVs</span>
|
||||||
|
<a name="l00160"></a>00160 <span class="comment"> * were used for computing the most recent position fix.</span>
|
||||||
|
<a name="l00161"></a>00161 <span class="comment"> */</span>
|
||||||
|
<a name="l00162"></a><a class="code" href="struct_gps_sv_status.html#9090a26639d97eec2b59bcd0446659c0">00162</a> uint32_t used_in_fix_mask;
|
||||||
|
<a name="l00163"></a>00163 } <a class="code" href="struct_gps_sv_status.html" title="Represents SV status.">GpsSvStatus</a>;
|
||||||
|
<a name="l00164"></a>00164 <span class="comment"></span>
|
||||||
|
<a name="l00165"></a>00165 <span class="comment">/** Callback with location information. */</span>
|
||||||
|
<a name="l00166"></a><a class="code" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae">00166</a> <span class="keyword">typedef</span> void (* <a class="code" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae" title="Callback with location information.">gps_location_callback</a>)(<a class="code" href="struct_gps_location.html" title="Represents a location.">GpsLocation</a>* location);
|
||||||
|
<a name="l00167"></a>00167 <span class="comment"></span>
|
||||||
|
<a name="l00168"></a>00168 <span class="comment">/** Callback with status information. */</span>
|
||||||
|
<a name="l00169"></a><a class="code" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412">00169</a> <span class="keyword">typedef</span> void (* <a class="code" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412" title="Callback with status information.">gps_status_callback</a>)(<a class="code" href="struct_gps_status.html" title="Represents the status.">GpsStatus</a>* status);
|
||||||
|
<a name="l00170"></a>00170 <span class="comment"></span>
|
||||||
|
<a name="l00171"></a>00171 <span class="comment">/** Callback with SV status information. */</span>
|
||||||
|
<a name="l00172"></a><a class="code" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9">00172</a> <span class="keyword">typedef</span> void (* <a class="code" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9" title="Callback with SV status information.">gps_sv_status_callback</a>)(<a class="code" href="struct_gps_sv_status.html" title="Represents SV status.">GpsSvStatus</a>* sv_info);
|
||||||
|
<a name="l00173"></a>00173 <span class="comment"></span>
|
||||||
|
<a name="l00174"></a>00174 <span class="comment">/** GPS callback structure. */</span>
|
||||||
|
<a name="l00175"></a><a class="code" href="struct_gps_callbacks.html">00175</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
|
||||||
|
<a name="l00176"></a><a class="code" href="struct_gps_callbacks.html#1f59b4f8eeaca50620f94761536dabd3">00176</a> <a class="code" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae" title="Callback with location information.">gps_location_callback</a> location_cb;
|
||||||
|
<a name="l00177"></a><a class="code" href="struct_gps_callbacks.html#7b15a1bf4f9b989677fef84f4d8141df">00177</a> <a class="code" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412" title="Callback with status information.">gps_status_callback</a> status_cb;
|
||||||
|
<a name="l00178"></a><a class="code" href="struct_gps_callbacks.html#fb34f60ad58e80de5c04790b107bb93d">00178</a> <a class="code" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9" title="Callback with SV status information.">gps_sv_status_callback</a> sv_status_cb;
|
||||||
|
<a name="l00179"></a>00179 } <a class="code" href="struct_gps_callbacks.html" title="GPS callback structure.">GpsCallbacks</a>;
|
||||||
|
<a name="l00180"></a>00180
|
||||||
|
<a name="l00181"></a>00181 <span class="comment"></span>
|
||||||
|
<a name="l00182"></a>00182 <span class="comment">/** Represents the standard GPS interface. */</span>
|
||||||
|
<a name="l00183"></a><a class="code" href="struct_gps_interface.html">00183</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00184"></a>00184 <span class="comment"> /**</span>
|
||||||
|
<a name="l00185"></a>00185 <span class="comment"> * Opens the interface and provides the callback routines</span>
|
||||||
|
<a name="l00186"></a>00186 <span class="comment"> * to the implemenation of this interface.</span>
|
||||||
|
<a name="l00187"></a>00187 <span class="comment"> */</span>
|
||||||
|
<a name="l00188"></a>00188 int (*init)( <a class="code" href="struct_gps_callbacks.html" title="GPS callback structure.">GpsCallbacks</a>* callbacks );
|
||||||
|
<a name="l00189"></a>00189 <span class="comment"></span>
|
||||||
|
<a name="l00190"></a>00190 <span class="comment"> /** Starts navigating. */</span>
|
||||||
|
<a name="l00191"></a>00191 int (*start)( void );
|
||||||
|
<a name="l00192"></a>00192 <span class="comment"></span>
|
||||||
|
<a name="l00193"></a>00193 <span class="comment"> /** Stops navigating. */</span>
|
||||||
|
<a name="l00194"></a>00194 int (*stop)( void );
|
||||||
|
<a name="l00195"></a>00195 <span class="comment"></span>
|
||||||
|
<a name="l00196"></a>00196 <span class="comment"> /** Sets requested frequency of fixes in seconds. */</span>
|
||||||
|
<a name="l00197"></a>00197 void (*set_fix_frequency)( <span class="keywordtype">int</span> frequency );
|
||||||
|
<a name="l00198"></a>00198 <span class="comment"></span>
|
||||||
|
<a name="l00199"></a>00199 <span class="comment"> /** Closes the interface. */</span>
|
||||||
|
<a name="l00200"></a>00200 void (*cleanup)( void );
|
||||||
|
<a name="l00201"></a>00201 <span class="comment"></span>
|
||||||
|
<a name="l00202"></a>00202 <span class="comment"> /** Injects the current time. */</span>
|
||||||
|
<a name="l00203"></a>00203 int (*inject_time)(GpsUtcTime time, int64_t timeReference,
|
||||||
|
<a name="l00204"></a>00204 <span class="keywordtype">int</span> uncertainty);
|
||||||
|
<a name="l00205"></a>00205 <span class="comment"></span>
|
||||||
|
<a name="l00206"></a>00206 <span class="comment"> /**</span>
|
||||||
|
<a name="l00207"></a>00207 <span class="comment"> * Specifies that the next call to start will not use the</span>
|
||||||
|
<a name="l00208"></a>00208 <span class="comment"> * information defined in the flags. GPS_DELETE_ALL is passed for</span>
|
||||||
|
<a name="l00209"></a>00209 <span class="comment"> * a cold start.</span>
|
||||||
|
<a name="l00210"></a>00210 <span class="comment"> */</span>
|
||||||
|
<a name="l00211"></a>00211 void (*delete_aiding_data)(GpsAidingData flags);
|
||||||
|
<a name="l00212"></a>00212 <span class="comment"></span>
|
||||||
|
<a name="l00213"></a>00213 <span class="comment"> /**</span>
|
||||||
|
<a name="l00214"></a>00214 <span class="comment"> * fix_frequency represents the time between fixes in seconds.</span>
|
||||||
|
<a name="l00215"></a>00215 <span class="comment"> * Set fix_frequency to zero for a single-shot fix.</span>
|
||||||
|
<a name="l00216"></a>00216 <span class="comment"> */</span>
|
||||||
|
<a name="l00217"></a>00217 int (*set_position_mode)(GpsPositionMode mode, <span class="keywordtype">int</span> fix_frequency);
|
||||||
|
<a name="l00218"></a>00218 <span class="comment"></span>
|
||||||
|
<a name="l00219"></a>00219 <span class="comment"> /** Get a pointer to extension information. */</span>
|
||||||
|
<a name="l00220"></a>00220 <span class="keyword">const</span> <span class="keywordtype">void</span>* (*get_extension)(<span class="keyword">const</span> <span class="keywordtype">char</span>* name);
|
||||||
|
<a name="l00221"></a>00221 } <a class="code" href="struct_gps_interface.html" title="Represents the standard GPS interface.">GpsInterface</a>;
|
||||||
|
<a name="l00222"></a>00222 <span class="comment"></span>
|
||||||
|
<a name="l00223"></a>00223 <span class="comment">/** Callback to request the client to download XTRA data.</span>
|
||||||
|
<a name="l00224"></a>00224 <span class="comment"> The client should download XTRA data and inject it by calling</span>
|
||||||
|
<a name="l00225"></a>00225 <span class="comment"> inject_xtra_data(). */</span>
|
||||||
|
<a name="l00226"></a><a class="code" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515">00226</a> <span class="keyword">typedef</span> void (* <a class="code" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515" title="Callback to request the client to download XTRA data.">gps_xtra_download_request</a>)();
|
||||||
|
<a name="l00227"></a>00227 <span class="comment"></span>
|
||||||
|
<a name="l00228"></a>00228 <span class="comment">/** Callback structure for the XTRA interface. */</span>
|
||||||
|
<a name="l00229"></a><a class="code" href="struct_gps_xtra_callbacks.html">00229</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
|
||||||
|
<a name="l00230"></a><a class="code" href="struct_gps_xtra_callbacks.html#7e879ba4c3e32c52eaa0fb04fb9c226f">00230</a> <a class="code" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515" title="Callback to request the client to download XTRA data.">gps_xtra_download_request</a> download_request_cb;
|
||||||
|
<a name="l00231"></a>00231 } <a class="code" href="struct_gps_xtra_callbacks.html" title="Callback structure for the XTRA interface.">GpsXtraCallbacks</a>;
|
||||||
|
<a name="l00232"></a>00232 <span class="comment"></span>
|
||||||
|
<a name="l00233"></a>00233 <span class="comment">/** Extended interface for XTRA support. */</span>
|
||||||
|
<a name="l00234"></a><a class="code" href="struct_gps_xtra_interface.html">00234</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00235"></a>00235 <span class="comment"> /**</span>
|
||||||
|
<a name="l00236"></a>00236 <span class="comment"> * Opens the XTRA interface and provides the callback routines</span>
|
||||||
|
<a name="l00237"></a>00237 <span class="comment"> * to the implemenation of this interface.</span>
|
||||||
|
<a name="l00238"></a>00238 <span class="comment"> */</span>
|
||||||
|
<a name="l00239"></a>00239 int (*init)( <a class="code" href="struct_gps_xtra_callbacks.html" title="Callback structure for the XTRA interface.">GpsXtraCallbacks</a>* callbacks );<span class="comment"></span>
|
||||||
|
<a name="l00240"></a>00240 <span class="comment"> /** Injects XTRA data into the GPS. */</span>
|
||||||
|
<a name="l00241"></a>00241 int (*inject_xtra_data)( <span class="keywordtype">char</span>* data, <span class="keywordtype">int</span> length );
|
||||||
|
<a name="l00242"></a>00242 } <a class="code" href="struct_gps_xtra_interface.html" title="Extended interface for XTRA support.">GpsXtraInterface</a>;
|
||||||
|
<a name="l00243"></a>00243 <span class="comment"></span>
|
||||||
|
<a name="l00244"></a>00244 <span class="comment">/** Extended interface for SUPL support. */</span>
|
||||||
|
<a name="l00245"></a><a class="code" href="struct_gps_supl_interface.html">00245</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{<span class="comment"></span>
|
||||||
|
<a name="l00246"></a>00246 <span class="comment"> /**</span>
|
||||||
|
<a name="l00247"></a>00247 <span class="comment"> * Sets the name of the APN to be used for SUPL.</span>
|
||||||
|
<a name="l00248"></a>00248 <span class="comment"> */</span>
|
||||||
|
<a name="l00249"></a>00249 int (*set_apn)( <span class="keyword">const</span> <span class="keywordtype">char</span>* apn );
|
||||||
|
<a name="l00250"></a>00250 } <a class="code" href="struct_gps_supl_interface.html" title="Extended interface for SUPL support.">GpsSuplInterface</a>;
|
||||||
|
<a name="l00251"></a>00251 <span class="comment"></span>
|
||||||
|
<a name="l00252"></a>00252 <span class="comment">/** Returns the hardware GPS interface. */</span>
|
||||||
|
<a name="l00253"></a>00253 <span class="keyword">const</span> <a class="code" href="struct_gps_interface.html" title="Represents the standard GPS interface.">GpsInterface</a>* <a class="code" href="gps_8h.html#6d15bb02f1f91dd760e3e172bd7711a1" title="Returns the hardware GPS interface.">gps_get_hardware_interface</a>();
|
||||||
|
<a name="l00254"></a>00254 <span class="comment"></span>
|
||||||
|
<a name="l00255"></a>00255 <span class="comment">/**</span>
|
||||||
|
<a name="l00256"></a>00256 <span class="comment"> * Returns the qemu emulated GPS interface.</span>
|
||||||
|
<a name="l00257"></a>00257 <span class="comment"> */</span>
|
||||||
|
<a name="l00258"></a>00258 <span class="keyword">const</span> <a class="code" href="struct_gps_interface.html" title="Represents the standard GPS interface.">GpsInterface</a>* <a class="code" href="gps_8h.html#f73f4a220fb97545e81d82fbff54b47e" title="Returns the qemu emulated GPS interface.">gps_get_qemu_interface</a>();
|
||||||
|
<a name="l00259"></a>00259 <span class="comment"></span>
|
||||||
|
<a name="l00260"></a>00260 <span class="comment">/**</span>
|
||||||
|
<a name="l00261"></a>00261 <span class="comment"> * Returns the default GPS interface.</span>
|
||||||
|
<a name="l00262"></a>00262 <span class="comment"> */</span>
|
||||||
|
<a name="l00263"></a>00263 <span class="keyword">const</span> <a class="code" href="struct_gps_interface.html" title="Represents the standard GPS interface.">GpsInterface</a>* <a class="code" href="gps_8h.html#b582931ddf4bafa2cc5044963be66987" title="Returns the default GPS interface.">gps_get_interface</a>();
|
||||||
|
<a name="l00264"></a>00264
|
||||||
|
<a name="l00265"></a>00265 <span class="preprocessor">#if __cplusplus</span>
|
||||||
|
<a name="l00266"></a>00266 <span class="preprocessor"></span>} <span class="comment">// extern "C"</span>
|
||||||
|
<a name="l00267"></a>00267 <span class="preprocessor">#endif</span>
|
||||||
|
<a name="l00268"></a>00268 <span class="preprocessor"></span>
|
||||||
|
<a name="l00269"></a>00269 <span class="preprocessor">#endif // _HARDWARE_GPS_H</span>
|
||||||
|
</pre></div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
337
pdk/docs/gps_8h.html
Executable file
@@ -0,0 +1,337 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>gps.h File Reference</h1>
|
||||||
|
<p>
|
||||||
|
<a href="gps_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_location.html">GpsLocation</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents a location. <a href="struct_gps_location.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_status.html">GpsStatus</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents the status. <a href="struct_gps_status.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_sv_info.html">GpsSvInfo</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents SV information. <a href="struct_gps_sv_info.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_sv_status.html">GpsSvStatus</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents SV status. <a href="struct_gps_sv_status.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_callbacks.html">GpsCallbacks</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">GPS callback structure. <a href="struct_gps_callbacks.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_interface.html">GpsInterface</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents the standard GPS interface. <a href="struct_gps_interface.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_xtra_callbacks.html">GpsXtraCallbacks</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback structure for the XTRA interface. <a href="struct_gps_xtra_callbacks.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_xtra_interface.html">GpsXtraInterface</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Extended interface for XTRA support. <a href="struct_gps_xtra_interface.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_gps_supl_interface.html">GpsSuplInterface</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Extended interface for SUPL support. <a href="struct_gps_supl_interface.html#_details">More...</a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15">GpsUtcTime</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Milliseconds since January 1, 1970. <a href="#f2b0ea531a44c010f81a4abd27504c15"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740">GpsPositionMode</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Requested mode for GPS operation. <a href="#2461a6f0dd56a1f7dc94e93207a1f740"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5">GpsStatusValue</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">GPS status event values. <a href="#de8fa0020d3aa1748a8e26759b768ec5"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31">GpsLocationFlags</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Flags to indicate which values are valid in a <a class="el" href="struct_gps_location.html" title="Represents a location.">GpsLocation</a>. <a href="#4ae31616d5e232ad7a346a2d4e723e31"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#93f0283aeabd20211499991a29db7377">GpsAidingData</a></td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Flags used to specify which aiding data to delete when calling delete_aiding_data(). <a href="#93f0283aeabd20211499991a29db7377"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae">gps_location_callback</a> )(<a class="el" href="struct_gps_location.html">GpsLocation</a> *location)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback with location information. <a href="#88f19d3da70dc0e951b51091ce0631ae"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412">gps_status_callback</a> )(<a class="el" href="struct_gps_status.html">GpsStatus</a> *status)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback with status information. <a href="#1d9ef60ab0b91f7c106867a6aa1e4412"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9">gps_sv_status_callback</a> )(<a class="el" href="struct_gps_sv_status.html">GpsSvStatus</a> *sv_info)</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback with SV status information. <a href="#67274e784834c6c2547f4b5344fc4ea9"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515">gps_xtra_download_request</a> )()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Callback to request the client to download XTRA data. <a href="#08fcfb3f85c2ac3008c9c73cf9136515"></a><br></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="struct_gps_interface.html">GpsInterface</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#6d15bb02f1f91dd760e3e172bd7711a1">gps_get_hardware_interface</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the hardware GPS interface. <a href="#6d15bb02f1f91dd760e3e172bd7711a1"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="struct_gps_interface.html">GpsInterface</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#f73f4a220fb97545e81d82fbff54b47e">gps_get_qemu_interface</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the qemu emulated GPS interface. <a href="#f73f4a220fb97545e81d82fbff54b47e"></a><br></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="struct_gps_interface.html">GpsInterface</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="gps_8h.html#b582931ddf4bafa2cc5044963be66987">gps_get_interface</a> ()</td></tr>
|
||||||
|
|
||||||
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the default GPS interface. <a href="#b582931ddf4bafa2cc5044963be66987"></a><br></td></tr>
|
||||||
|
</table>
|
||||||
|
<hr><h2>Typedef Documentation</h2>
|
||||||
|
<a class="anchor" name="88f19d3da70dc0e951b51091ce0631ae"></a><!-- doxytag: member="gps.h::gps_location_callback" ref="88f19d3da70dc0e951b51091ce0631ae" args=")(GpsLocation *location)" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef void(* <a class="el" href="gps_8h.html#88f19d3da70dc0e951b51091ce0631ae">gps_location_callback</a>)(<a class="el" href="struct_gps_location.html">GpsLocation</a> *location) </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Callback with location information.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00166">166</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="1d9ef60ab0b91f7c106867a6aa1e4412"></a><!-- doxytag: member="gps.h::gps_status_callback" ref="1d9ef60ab0b91f7c106867a6aa1e4412" args=")(GpsStatus *status)" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef void(* <a class="el" href="gps_8h.html#1d9ef60ab0b91f7c106867a6aa1e4412">gps_status_callback</a>)(<a class="el" href="struct_gps_status.html">GpsStatus</a> *status) </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Callback with status information.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00169">169</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="67274e784834c6c2547f4b5344fc4ea9"></a><!-- doxytag: member="gps.h::gps_sv_status_callback" ref="67274e784834c6c2547f4b5344fc4ea9" args=")(GpsSvStatus *sv_info)" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef void(* <a class="el" href="gps_8h.html#67274e784834c6c2547f4b5344fc4ea9">gps_sv_status_callback</a>)(<a class="el" href="struct_gps_sv_status.html">GpsSvStatus</a> *sv_info) </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Callback with SV status information.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00172">172</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="08fcfb3f85c2ac3008c9c73cf9136515"></a><!-- doxytag: member="gps.h::gps_xtra_download_request" ref="08fcfb3f85c2ac3008c9c73cf9136515" args=")()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef void(* <a class="el" href="gps_8h.html#08fcfb3f85c2ac3008c9c73cf9136515">gps_xtra_download_request</a>)() </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Callback to request the client to download XTRA data.
|
||||||
|
<p>
|
||||||
|
The client should download XTRA data and inject it by calling inject_xtra_data().
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00226">226</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="93f0283aeabd20211499991a29db7377"></a><!-- doxytag: member="gps.h::GpsAidingData" ref="93f0283aeabd20211499991a29db7377" args="" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef uint16_t <a class="el" href="gps_8h.html#93f0283aeabd20211499991a29db7377">GpsAidingData</a> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Flags used to specify which aiding data to delete when calling delete_aiding_data().
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00075">75</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="4ae31616d5e232ad7a346a2d4e723e31"></a><!-- doxytag: member="gps.h::GpsLocationFlags" ref="4ae31616d5e232ad7a346a2d4e723e31" args="" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef uint16_t <a class="el" href="gps_8h.html#4ae31616d5e232ad7a346a2d4e723e31">GpsLocationFlags</a> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Flags to indicate which values are valid in a <a class="el" href="struct_gps_location.html" title="Represents a location.">GpsLocation</a>.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00059">59</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="2461a6f0dd56a1f7dc94e93207a1f740"></a><!-- doxytag: member="gps.h::GpsPositionMode" ref="2461a6f0dd56a1f7dc94e93207a1f740" args="" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef uint16_t <a class="el" href="gps_8h.html#2461a6f0dd56a1f7dc94e93207a1f740">GpsPositionMode</a> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Requested mode for GPS operation.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00033">33</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="de8fa0020d3aa1748a8e26759b768ec5"></a><!-- doxytag: member="gps.h::GpsStatusValue" ref="de8fa0020d3aa1748a8e26759b768ec5" args="" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef uint16_t <a class="el" href="gps_8h.html#de8fa0020d3aa1748a8e26759b768ec5">GpsStatusValue</a> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
GPS status event values.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00044">44</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="f2b0ea531a44c010f81a4abd27504c15"></a><!-- doxytag: member="gps.h::GpsUtcTime" ref="f2b0ea531a44c010f81a4abd27504c15" args="" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">typedef int64_t <a class="el" href="gps_8h.html#f2b0ea531a44c010f81a4abd27504c15">GpsUtcTime</a> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Milliseconds since January 1, 1970.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p>Definition at line <a class="el" href="gps_8h-source.html#l00027">27</a> of file <a class="el" href="gps_8h-source.html">gps.h</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<hr><h2>Function Documentation</h2>
|
||||||
|
<a class="anchor" name="6d15bb02f1f91dd760e3e172bd7711a1"></a><!-- doxytag: member="gps.h::gps_get_hardware_interface" ref="6d15bb02f1f91dd760e3e172bd7711a1" args="()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">const <a class="el" href="struct_gps_interface.html">GpsInterface</a>* gps_get_hardware_interface </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Returns the hardware GPS interface.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="b582931ddf4bafa2cc5044963be66987"></a><!-- doxytag: member="gps.h::gps_get_interface" ref="b582931ddf4bafa2cc5044963be66987" args="()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">const <a class="el" href="struct_gps_interface.html">GpsInterface</a>* gps_get_interface </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Returns the default GPS interface.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
<a class="anchor" name="f73f4a220fb97545e81d82fbff54b47e"></a><!-- doxytag: member="gps.h::gps_get_qemu_interface" ref="f73f4a220fb97545e81d82fbff54b47e" args="()" -->
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">const <a class="el" href="struct_gps_interface.html">GpsInterface</a>* gps_get_qemu_interface </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"> </td>
|
||||||
|
<td> ) </td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="memdoc">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Returns the qemu emulated GPS interface.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
37
pdk/docs/group__memory.html
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>Porividng Heap Memory<br>
|
||||||
|
<small>
|
||||||
|
[<a class="el" href="group__networking.html">Neworking Support</a>]</small>
|
||||||
|
</h1><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
</table>
|
||||||
|
This is the text in the "Providing Heap Memory" subgroup </div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
38
pdk/docs/group__networking.html
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>Neworking Support</h1><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
|
||||||
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__memory.html">Porividng Heap Memory</a></td></tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||||
|
This is a text for the Networking Support Group </div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
33
pdk/docs/groups_8dox.html
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>groups.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -7,6 +7,18 @@
|
|||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20index.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20index.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -212,7 +242,7 @@ with at least keypad and display drivers properly installed.</p>
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Instrumentation Testing</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20instrumentation_testing.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20instrumentation_framework.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -142,32 +172,58 @@ h1,h2,h3 {
|
|||||||
<div class="jd-descr">
|
<div class="jd-descr">
|
||||||
|
|
||||||
|
|
||||||
<a name="androidTitleInstrumentationTesting"></a><h1>Instrumentation Testing</h1>
|
<a name="androidTitleInstrumentationFramework"></a><h1>Instrumentation Testing</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="toc"/>
|
<a name="toc"/>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
<a href="#androidInstrumentationTestingIntro">Introduction</a><br/>
|
<a href="#androidInstrumentationFrameworkIntro">Introduction</a><br/>
|
||||||
|
<a href="#androidInstrumentationTestingFramework">Instrumentation Framework</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
<a href="#androidInstrumentationTestingClasses">Classes</a><br/>
|
<a href="#androidInstrumentationTestingClasses">Classes</a><br/>
|
||||||
<a href="#androidInstrumentationTestingRunning">Running Tests</a><br/><div style="padding-left:40px">
|
<a href="#androidInstrumentationFrameworkamCommand">Understanding the am Command</a><br/></div>
|
||||||
|
<a href="#androidInstrumentationFrameworkPlatform">Platform Test Suites</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
<a href="#androidInstrumentationTestingRunningAll">All Tests</a><br/>
|
<a href="#androidTestingPlatformFramework">Framework Tests</a><br/>
|
||||||
|
<a href="#androidTestingPlatformCoreLibrary">Core Library</a><br/></div>
|
||||||
|
<a href="#androidInstrumentationFrameworkWritingRunning">Running Tests</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
|
<a href="#androidInstrumentationTestingRunningAll">All Tests with Default TestRunner behavior</a><br/>
|
||||||
|
<a href="#androidTestingTestSinglePakcage">Running all Tests Under Single Package</a><br/>
|
||||||
|
<a href="#androidTestingSingleTestSuite">Running a Single Test Suite</a><br/>
|
||||||
<a href="#androidInstrumentationTestingRunningSingleTestCase">A Single Test Case</a><br/>
|
<a href="#androidInstrumentationTestingRunningSingleTestCase">A Single Test Case</a><br/>
|
||||||
<a href="#androidInstrumentationTestingRunningSingleTest">A Single Test</a><br/></div>
|
<a href="#androidInstrumentationTestingRunningSingleTest">A Single Test</a><br/>
|
||||||
<a href="#androidInstrumentationTestingCreating">Creating Tests</a><br/><div style="padding-left:40px">
|
<a href="#androidTestingDebugging">Attaching a debugger to your test</a><br/></div>
|
||||||
|
<a href="#androidInstrumentationTestingCreating">Writing Tests</a><br/><div style="padding-left:40px">
|
||||||
|
|
||||||
|
<a href="#androidTestingLocationFiles">Location of Files</a><br/>
|
||||||
|
<a href="#androidTestingContentMakefile">Contents of makefile</a><br/>
|
||||||
|
<a href="#androidTestingContentManifest">Content of Manifest</a><br/>
|
||||||
<a href="#androidInstrumentationTestingCreatingTestRunner">New Instrumentation TestRunner</a><br/>
|
<a href="#androidInstrumentationTestingCreatingTestRunner">New Instrumentation TestRunner</a><br/>
|
||||||
<a href="#androidInstrumentationTestingCreatingTestCase">New InstrumentationTestCase</a><br/></div>
|
<a href="#androidInstrumentationTestingCreatingTestCase">New InstrumentationTestCase</a><br/>
|
||||||
<a href="#androidInstrumentationAliases">Aliases for Running Framework Instrumentation Tests</a><br/></div></font></div>
|
<a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/>
|
||||||
|
<a href="#androidTestingKindsofTests">Deciding Kinds of Tests to Write</a><br/></div>
|
||||||
|
<a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div></font></div>
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingIntro"></a><h2>Introduction</h2>
|
<a name="androidInstrumentationFrameworkIntro"></a><h2>Introduction</h2>
|
||||||
|
|
||||||
<p>Sometimes you may want to manually interact with your applications to verify that a particular feature or behavior is working properly; why not automate this verification with a JUnit TestCase that can instrument applications?</p>
|
<p>This document describes how to use the Instrumentation Framework to write test cases. Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements. </p>
|
||||||
<p>Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements.</p>
|
<p>You should have a working knowledge of the following:</p>
|
||||||
|
<ul>
|
||||||
|
<li> Android Application Framework</li>
|
||||||
|
<li> Using <code>adb</code>, <code>am</code> and various logging functionality </li>
|
||||||
|
<li> A brief understanding of the application of interest, that is, the names of the classes which handle the intents etc. </li>
|
||||||
|
<li> JUnit testing.</li>
|
||||||
|
</ul>
|
||||||
|
<p> Each Android application runs in its own process. Instrumentation kills the application process and restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingClasses"></a><h2>Classes</h2>
|
<a name="androidInstrumentationTestingFramework"></a><h2>Instrumentation Framework</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidInstrumentationTestingClasses"></a><h3>Classes</h3>
|
||||||
|
|
||||||
<p> The following classes help glue together <code>Instrumentation</code> with JUnit testing. </p>
|
<p> The following classes help glue together <code>Instrumentation</code> with JUnit testing. </p>
|
||||||
<table>
|
<table>
|
||||||
@@ -177,8 +233,7 @@ h1,h2,h3 {
|
|||||||
<tr>
|
<tr>
|
||||||
<td valign="top"><code>InstrumentationTestCase</code></td>
|
<td valign="top"><code>InstrumentationTestCase</code></td>
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
<p>This extends the standard JUnit <code>TestCase</code> and offers access to an <code>Instrumentation</code> class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.</p>
|
<p>This extends the standard JUnit <code>TestCase</code> and offers access to an <code>Instrumentation</code> class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.</p> </td>
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top"><code>InstrumentationTestRunner</code></td>
|
<td valign="top"><code>InstrumentationTestRunner</code></td>
|
||||||
@@ -199,6 +254,10 @@ h1,h2,h3 {
|
|||||||
<td valign="top"><code>ActivityTestCase</code></td>
|
<td valign="top"><code>ActivityTestCase</code></td>
|
||||||
<td valign="top"><p>This class can be used to write tests for a specific activity. An activity is launched in its <code>setUp()</code> method and finished with <code>tearDown</code>. If you write a test case that extends <code>ActivityTestCase</code>, you can write tests that access the activity using <code>getActivity()</code> and assume it has been set up properly.</p></td>
|
<td valign="top"><p>This class can be used to write tests for a specific activity. An activity is launched in its <code>setUp()</code> method and finished with <code>tearDown</code>. If you write a test case that extends <code>ActivityTestCase</code>, you can write tests that access the activity using <code>getActivity()</code> and assume it has been set up properly.</p></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top"><code>ServiceTestCase</code></td>
|
||||||
|
<td valign="top">This test case provides a framework in which you can test Service classes in a controlled environment. It provides basic support for the lifecycle of a Service, and hooks by which you can inject various dependencies and control the environment in which your Service is tested.</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top"><code>SingleLaunchActivityTestCase</code></td>
|
<td valign="top"><code>SingleLaunchActivityTestCase</code></td>
|
||||||
<td valign="top">This class is similar to <code>ActivityTestCase</code> except that the activity is launched once per class instead of every time the test case calls setup. </td>
|
<td valign="top">This class is similar to <code>ActivityTestCase</code> except that the activity is launched once per class instead of every time the test case calls setup. </td>
|
||||||
@@ -210,8 +269,52 @@ h1,h2,h3 {
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingRunning"></a><h2>Running Tests</h2>
|
<a name="androidInstrumentationFrameworkamCommand"></a><h3>Understanding the am Command</h3>
|
||||||
|
|
||||||
|
<p>The am command is a command-line interface to the ActivityManager (see <a href="http://code.google.com/android/reference/android/app/ActivityManager.html">http://code.google.com/android/reference/android/app/ActivityManager.html</a> for details). <code>am</code> is used to start and instrument activities using the adb shell command, as shown in the snippet below:</p>
|
||||||
|
<pre class="prettify">
|
||||||
|
> adb shell am
|
||||||
|
usage: am [start|instrument]
|
||||||
|
am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
|
||||||
|
[-c <CATEGORY> [-c <CATEGORY>] ...]
|
||||||
|
[-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
|
||||||
|
[-n <COMPONENT>] [-D] [<URI>]
|
||||||
|
am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
|
||||||
|
[-w] <COMPONENT>
|
||||||
|
For example, to start the Contacts application you can use
|
||||||
|
> adb shell am start -n com.google.android.contacts/.ContactsActivity
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidInstrumentationFrameworkPlatform"></a><h2>Platform Test Suites</h2>
|
||||||
|
|
||||||
|
<p>This section provides an overview for various unit and functional test cases that can be executed through the instrumentation framework.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingPlatformFramework"></a><h3>Framework Tests</h3>
|
||||||
|
|
||||||
|
<p>Framework test cases test the Android application framework or specific Android application functionality that requires an Android runtime context. These tests can be found in <code>//device/tests</code> and <code>//device/apps/AndroidTests</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingPlatformCoreLibrary"></a><h3>Core Library</h3>
|
||||||
|
|
||||||
|
<p>Core library test cases test the Android library functionality that does not require an Android runtime context. These tests are split into Android library (android.* package space) tests at <code>//device/java/tests</code> and Java library (java.*, javax.*, etc. packages) tests at <code>//device/dalvik/libcore/.../tests</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidInstrumentationFrameworkWritingRunning"></a><h2>Running Tests</h2>
|
||||||
|
|
||||||
|
<p>Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the <code>tests/Contacts</code> directory. </p>
|
||||||
|
<ul>
|
||||||
|
<li> There should be a Makefile and an Android Manifest file. </li>
|
||||||
|
<li> Tests are located in <code>tests/Contacts/src/com/google/android/contactstests</code>. </li>
|
||||||
|
<li> The Instrumentation Test Runner is located at <code>tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java</code>.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Suppose you have a makefile with <code>Contactstests</code> as the target. </p>
|
||||||
|
<ul>
|
||||||
|
<li> <code>make Contactstests</code>: Compiles the test cases. </li>
|
||||||
|
<li> <code>adb install Contactstests.apk</code>: Installs the apk on the device. </li>
|
||||||
|
<li> Use the adb shell <code>am</code> command to run them. </li>
|
||||||
|
</ul>
|
||||||
<p> To run your tests, use the <code>am instrument</code> command with your <code>InstrumentationTestRunner</code> as its argument. Results are printed as a result of the instrumentation. For example, the following snippet displays the output after running the framework tests with one test failing (note the unusual syntax caused by how instrumentations are run via <code>am</code>):</p>
|
<p> To run your tests, use the <code>am instrument</code> command with your <code>InstrumentationTestRunner</code> as its argument. Results are printed as a result of the instrumentation. For example, the following snippet displays the output after running the framework tests with one test failing (note the unusual syntax caused by how instrumentations are run via <code>am</code>):</p>
|
||||||
<pre class="prettify">
|
<pre class="prettify">
|
||||||
$ adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
|
$ adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
|
||||||
@@ -236,33 +339,185 @@ $
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingRunningAll"></a><h3>All Tests</h3>
|
<a name="androidInstrumentationTestingRunningAll"></a><h3>All Tests with Default TestRunner behavior</h3>
|
||||||
|
|
||||||
<pre class="prettify">
|
<p>If no class or package is passed in to run, InstrumentationTestRunner will automatically find and run all tests under the package of the test application (as defined by the <code>android:targetPackage</code> attribute of the instrumentation defined in its manifest file).
|
||||||
$ adb shell am instrument -w MyInstrumentationTestRunner
|
</p>
|
||||||
|
<pre>
|
||||||
|
$ adb shell am instrument -w \
|
||||||
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
|
||||||
|
INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=..........
|
||||||
|
Time: 2.317
|
||||||
|
|
||||||
|
OK (10 tests)
|
||||||
|
|
||||||
|
|
||||||
|
INSTRUMENTATION_CODE: -1
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingTestSinglePakcage"></a><h3>Running all Tests Under Single Package</h3>
|
||||||
|
|
||||||
|
<p>If you have many tests under one package, use the <code>-e package <packagename></code> option to run all tests under that package without having to manually create a test suite.</p>
|
||||||
|
<pre>
|
||||||
|
$ adb shell am instrument -w \
|
||||||
|
-e package com.android.samples.view \
|
||||||
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=........
|
||||||
|
Time: 1.587
|
||||||
|
|
||||||
|
OK (8 tests)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingSingleTestSuite"></a><h3>Running a Single Test Suite</h3>
|
||||||
|
|
||||||
|
<p>If you prefer to explicitly state which tests comprise all of your tests, you can define a test suite and run that directly. By convention, all test packages in your system should have at least one suite called <code>AllTests</code> (see <code>AllTests.java</code>). To run all of the tests using the <code>AllTests</code> suite for the api demos test app:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
$ adb shell am instrument -w \
|
||||||
|
-e class com.android.samples.AllTests \
|
||||||
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
|
||||||
|
INSTRUMENTATION_RESULT: Test results for AllTests=..........
|
||||||
|
Time: 2.286
|
||||||
|
|
||||||
|
OK (10 tests)
|
||||||
|
|
||||||
|
|
||||||
|
INSTRUMENTATION_CODE: -1
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingRunningSingleTestCase"></a><h3>A Single Test Case</h3>
|
<a name="androidInstrumentationTestingRunningSingleTestCase"></a><h3>A Single Test Case</h3>
|
||||||
|
|
||||||
<pre class="prettify">
|
<pre>
|
||||||
$ adb shell am instrument \
|
$ adb shell am instrument -w \
|
||||||
-e class MyInstrumentationTestCase \
|
-e class com.android.samples.view.Focus2ActivityTest \
|
||||||
-w MyInstrumentationTestRunner
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
</pre>
|
|
||||||
|
INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=....
|
||||||
|
Time: 1.359
|
||||||
|
|
||||||
|
OK (4 tests)
|
||||||
|
|
||||||
|
|
||||||
|
INSTRUMENTATION_CODE: -1
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingRunningSingleTest"></a><h3>A Single Test</h3>
|
<a name="androidInstrumentationTestingRunningSingleTest"></a><h3>A Single Test</h3>
|
||||||
|
|
||||||
<pre class="prettify">
|
<pre>
|
||||||
$ adb shell am instrument \
|
$ adb shell am instrument -w \
|
||||||
-e class MyInstrumentationTestCase#myTestMethod \
|
-e class com.android.samples.view.Focus2ActivityTest#testGoingLeftFromRightButtonGoesToCenter \
|
||||||
-w MyInstrumentationTestRunner
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
|
||||||
|
INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=.
|
||||||
|
Time: 0.51
|
||||||
|
|
||||||
|
OK (1 test)
|
||||||
|
|
||||||
|
|
||||||
|
INSTRUMENTATION_CODE: -1
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingDebugging"></a><h3>Attaching a debugger to your test</h3>
|
||||||
|
|
||||||
|
<p>In order to debug your test code, instruct the controller to stop and wait for the debugger by adding <code>-e debug true</code> to your
|
||||||
|
command line. This causes the test runner to stop and wait for the debugger just before calling your <code>setUp()</code> method. For example,</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
$ adb shell am instrument -w \
|
||||||
|
-e debug true \
|
||||||
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidInstrumentationTestingCreating"></a><h2>Writing Tests</h2>
|
||||||
|
|
||||||
|
<p>When writing tests, refer to the ApiDemos tests as models (located at <code>//device/samples/ApiDemos</code>). This section provides an overview of the test structure with ApiDemos.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingLocationFiles"></a><h3>Location of Files</h3>
|
||||||
|
|
||||||
|
<p>Test packages should use the following structure and include <code>Android.mk</code>, <code>AndroidManifest.xml</code>, <code>AllTests.java</code>, and a src directory that mirrors the src directory of the tested application.</p>
|
||||||
|
<p>Files are located within a <code>tests</code> directory found in the root directory:</p>
|
||||||
|
<pre>
|
||||||
|
$ find samples/ApiDemos/tests
|
||||||
|
samples/ApiDemos/tests
|
||||||
|
samples/ApiDemos/tests/Android.mk
|
||||||
|
samples/ApiDemos/tests/AndroidManifest.xml
|
||||||
|
samples/ApiDemos/tests/src
|
||||||
|
samples/ApiDemos/tests/src/com
|
||||||
|
samples/ApiDemos/tests/src/com/google
|
||||||
|
samples/ApiDemos/tests/src/com/google/android
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/AllTests.java
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/ApiDemosTest.java
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/os
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/os/MorseCodeConverterTest.java
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/view
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2ActivityTest.java
|
||||||
|
samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2AndroidTest.java
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingCreating"></a><h2>Creating Tests</h2>
|
<a name="androidTestingContentMakefile"></a><h3>Contents of makefile</h3>
|
||||||
|
|
||||||
|
<p>The contents of the makefile are similar to a normal application with the addition of a <code>LOCAL_INSTRUMENTATION_FOR</code> declaration.<p />
|
||||||
|
<pre>
|
||||||
|
# Add appropriate copyright banner here
|
||||||
|
LOCAL_PATH:= $(call my-dir)
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
# We only want this apk build for tests.
|
||||||
|
LOCAL_MODULE_TAGS := tests
|
||||||
|
|
||||||
|
# Include all test java files.
|
||||||
|
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||||
|
|
||||||
|
# Notice that we don't have to include the src files of ApiDemos because, by
|
||||||
|
# running the tests using an instrumentation targeting ApiDemos, we
|
||||||
|
# automatically get all of its classes loaded into our environment.
|
||||||
|
|
||||||
|
LOCAL_PACKAGE_NAME := ApiDemosTests
|
||||||
|
|
||||||
|
LOCAL_INSTRUMENTATION_FOR := ApiDemos
|
||||||
|
|
||||||
|
include $(BUILD_PACKAGE)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingContentManifest"></a><h3>Content of Manifest</h3>
|
||||||
|
|
||||||
|
<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
|
||||||
|
<pre>
|
||||||
|
# Add appropriate copyright banner here
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.android.samples.tests">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This declares that this app uses the instrumentation test runner targeting
|
||||||
|
the package of com.android.samples. To run the tests use the command:
|
||||||
|
"adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
|
||||||
|
-->
|
||||||
|
<instrumentation android:name="android.test.InstrumentationTestRunner"
|
||||||
|
android:targetPackage="com.android.samples"
|
||||||
|
android:label="Tests for Api Demos."/>
|
||||||
|
|
||||||
|
</manifest>
|
||||||
|
</pre>
|
||||||
|
<p> </p>
|
||||||
|
<p>The following snippet will prefix the <code>/android.test.InstrumentationTestRunner</code> when running tests from the command line:</p>
|
||||||
|
<pre>
|
||||||
|
$ adb shell am instrument -w \
|
||||||
|
com.android.samples.tests/android.test.InstrumentationTestRunner
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New Instrumentation TestRunner</h3>
|
<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New Instrumentation TestRunner</h3>
|
||||||
@@ -328,26 +583,106 @@ public class ButtonPressTest extends ActivityTestCase<MyActivity> {
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<a name="androidInstrumentationAliases"></a><h2>Aliases for Running Framework Instrumentation Tests</h2>
|
<a name="androidInstrumentationFrameworkTestCase"></a><h3>Exploring a Test Case</h3>
|
||||||
|
|
||||||
|
<p> The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc. </p>
|
||||||
|
<p><code>Instrumentation.java</code> has helper functions that send key events and strings, for example: </p>
|
||||||
|
<ul>
|
||||||
|
<li><code>getInstrumentation()</code>: Returns the handle to the instrumentation </li>
|
||||||
|
<li><code>sendCharacterSync</code>: Sends a character. </li>
|
||||||
|
<li><code>sendStringSync</code>: Sends a string to an input box. </li>
|
||||||
|
<li><code>sendKeyDownUpSync</code>: Sends a specific keyevent. </li>
|
||||||
|
<li><code>sendTrackballEventSync</code>: Sends a trackball event.</li>
|
||||||
|
</ul>
|
||||||
|
<p> You can find the test case below at <code>device/tests/Contacts.</code></p>
|
||||||
<pre class="prettify">
|
<pre class="prettify">
|
||||||
# compiles and installs FrameworkTests
|
private void addNewContact(String name, int star, int phoneType, String number, String label,
|
||||||
alias deploytests="(cd tests/FrameworkTests/ && mm) && adb install out/target/product/dream/system/app/FrameworkTest.apk"
|
String email, int emailType){
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
Uri phoneUri = null;
|
||||||
|
Uri emailUri = null;
|
||||||
|
|
||||||
# runs all of FrameworkTests unit tests
|
values.put(Contacts.People.NAME, name);
|
||||||
alias runtests="adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner"
|
values.put(Contacts.People.STARRED, star);
|
||||||
|
|
||||||
# runtest TEST: runs a single unit test, for instance runtest view.VisibilityTest
|
//Add Phone Numbers
|
||||||
# -- for convenience, you don't have to type the com.google.android.frameworktest.tests.
|
Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
|
||||||
function runtest {
|
phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
|
||||||
adb shell am instrument -e class com.google.android.frameworktest.tests.$1 -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
|
|
||||||
|
values.clear();
|
||||||
|
values.put(Contacts.Phones.TYPE, phoneType);
|
||||||
|
values.put(Contacts.Phones.NUMBER, number);
|
||||||
|
values.put(Contacts.Phones.LABEL, label);
|
||||||
|
mActivity.getContentResolver().insert(phoneUri, values);
|
||||||
|
|
||||||
|
//Add Email
|
||||||
|
emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
|
||||||
|
|
||||||
|
values.clear();
|
||||||
|
values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
|
||||||
|
values.put(ContactMethods.DATA, email);
|
||||||
|
values.put(ContactMethods.LABEL, "");
|
||||||
|
values.put(ContactMethods.TYPE, emailType);
|
||||||
|
mActivity.getContentResolver().insert(emailUri, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
# debugtest TEST: runs a single unit test in debug mode, for instance runtest view.VisibilityTest
|
|
||||||
function debugtest {
|
public void testAddSaveSingleContact(){
|
||||||
adb shell am instrument -e debug true -e class com.google.android.frameworktest.tests.$1 -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
|
int previousCount = mActivity.getListView().getCount();
|
||||||
|
String message;
|
||||||
|
|
||||||
|
addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
|
||||||
|
|
||||||
|
message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
|
||||||
|
mActivity.getListView().getCount();
|
||||||
|
assertEquals(message, ++previousCount, mActivity.getListView().getCount());
|
||||||
|
|
||||||
|
// Check Content; Name; Num; Starred
|
||||||
|
assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
|
||||||
|
assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
|
||||||
|
|
||||||
|
//Check email is saved
|
||||||
|
//cursor = returnEmailCursorAtId("1");
|
||||||
|
Uri uri = Uri.parse("content://contacts/people/1");
|
||||||
|
uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
|
||||||
|
Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
|
||||||
|
assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
|
||||||
|
|
||||||
|
int dataIndex = cursor.getColumnIndexOrThrow("data");
|
||||||
|
assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
|
||||||
|
cursor.deactivate();
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidTestingKindsofTests"></a><h3>Deciding Kinds of Tests to Write</h3>
|
||||||
|
|
||||||
|
<p>Once you are bootstrapped with your test application, you can start writing tests. There are three of types of tests you may wish to write:</p>
|
||||||
|
<p><ul>
|
||||||
|
<li> <strong>TestCase</strong>: The standard junit test case.
|
||||||
|
</li>
|
||||||
|
<li> <strong>AndroidTestCase</strong>: A test case with access to a Context object that is injected for you by the instrumentation test runner.
|
||||||
|
</li>
|
||||||
|
<li> <strong>InstrumentationTestCase</strong>: A test case with access to an Instrumentation, which can be used to launch activities, content providers, send key events, etc.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>The API Demos test suite includes examples of all three styles and can be used as a guideline for writing each type of test.</p>
|
||||||
|
<p>There are two utility classes available for the most common uses of InstrumentationTestCase: ActivityTestCase and ProviderTestCase. See their javadoc for more information.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="androidInstrumentationFrameworkTroubleshooting"></a><h2>Troubleshooting</h2>
|
||||||
|
|
||||||
|
<p>If you run your test cases and nothing appears to happen, have a look at <code>adb logcat</code>. The following is a common problem:</p>
|
||||||
|
<pre class="prettify">
|
||||||
|
I/dalvikvm( 688): threadid=11: attached from native, name=Binder Thread #1
|
||||||
|
I/dalvikvm( 688): threadid=13: attached from native, name=Binder Thread #2
|
||||||
|
W/ActivityManager( 469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
|
||||||
|
D/AndroidRuntime( 688): Shutting down VM
|
||||||
|
E/AndroidRuntime( 688): ERROR: thread attach failed
|
||||||
|
</pre>
|
||||||
|
<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
|
||||||
|
|
||||||
|
|
||||||
<p><span class="lh2"><a name="androidFooter"></a></span>
|
<p><span class="lh2"><a name="androidFooter"></a></span>
|
||||||
@@ -375,7 +710,7 @@ function debugtest {
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Source Code Overview</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20intro_source_code.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20index.html%20v0.5%20-%2025%20September%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,6 +109,7 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -98,12 +117,14 @@ h1,h2,h3 {
|
|||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
||||||
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +132,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -194,107 +228,107 @@ h1,h2,h3 {
|
|||||||
|
|
||||||
|
|
||||||
<li>apps
|
<li>apps
|
||||||
: Core Android applications such as Phone, Camera, and Calendar.
|
Core Android applications such as Phone, Camera, and Calendar.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>boot
|
<li>boot
|
||||||
: Reference Android bootloader and other boot-related source code.
|
Reference Android bootloader and other boot-related source code.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>commands
|
<li>commands
|
||||||
: Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system.
|
Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>config
|
<li>config
|
||||||
: System-wide makefiles and linker scripts.
|
System-wide makefiles and linker scripts.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>content
|
<li>content
|
||||||
: Standard Android ContentProvider modules.
|
Standard Android ContentProvider modules.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>dalvik
|
<li>dalvik
|
||||||
: Android runtime Virtual Machine (VM).
|
Android runtime Virtual Machine (VM).
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>data
|
<li>data
|
||||||
: Fonts, keymaps, sounds, timezone information, etc.
|
Fonts, keymaps, sounds, timezone information, etc.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>docs
|
<li>docs
|
||||||
: Full set of Android documentation.
|
Full set of Android documentation.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>extlibs
|
<li>extlibs
|
||||||
: Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries.
|
Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>ide
|
<li>ide
|
||||||
: Tools for support of the IDE's used to write Android applications.
|
Tools for support of the IDE's used to write Android applications.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>include
|
<li>include
|
||||||
: Android system headers for inclusion.
|
Android system headers for inclusion.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>java
|
<li>java
|
||||||
: Android core APIs, as well as some external libraries.
|
Android core APIs, as well as some external libraries.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>libs
|
<li>libs
|
||||||
: Android-specific C++ based libraries.
|
Android-specific C++ based libraries.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>partner
|
<li>partner
|
||||||
: Project-specific source code for various proprietary components.
|
Project-specific source code for various proprietary components.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>prebuilt
|
<li>prebuilt
|
||||||
: Prebuilt tools, like the toolchains and emulator binary.
|
Prebuilt tools, like the toolchains and emulator binary.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>product
|
<li>product
|
||||||
: Device-specific configuration files. This directory will include a subdirectory for each new device.
|
Device-specific configuration files. This directory will include a subdirectory for each new device.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>samples
|
<li>samples
|
||||||
: Sample applications.
|
Sample applications.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>servers
|
<li>servers
|
||||||
: C++ based system servers.
|
C++ based system servers.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>system
|
<li>system
|
||||||
: Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging.
|
Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>tests
|
<li>tests
|
||||||
: Platform and application test cases.
|
Platform and application test cases.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>tools
|
<li>tools
|
||||||
: Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator").
|
Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator").
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
@@ -338,7 +372,7 @@ h1,h2,h3 {
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.5 - 25 September 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||||
<title>Android - Keympas and Keyboard Input</title>
|
<title>Android - Porting Guide</title>
|
||||||
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script>
|
||||||
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/jquery.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
<script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script>
|
||||||
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
<script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
function resizeHeight() {
|
||||||
|
if(document.getElementById && !(document.all)) {
|
||||||
|
height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20;
|
||||||
|
document.getElementById('doxygen').style.height = height;
|
||||||
|
}
|
||||||
|
else if(document.all) {
|
||||||
|
height= document.frames('doxygen').document.body.scrollHeight + 20;
|
||||||
|
document.all.doxygen.style.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet">
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
@@ -33,6 +45,7 @@ h1,h2,h3 {
|
|||||||
<div id="skipto"> </div>
|
<div id="skipto"> </div>
|
||||||
<div id="langpref">
|
<div id="langpref">
|
||||||
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
<!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="gc-header">
|
<div id="gc-header">
|
||||||
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
<div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div>
|
||||||
@@ -51,6 +64,7 @@ h1,h2,h3 {
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
<div id="searchForm2" class="searchForm2" style="display:none">
|
<div id="searchForm2" class="searchForm2" style="display:none">
|
||||||
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
<form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse">
|
||||||
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
<input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" />
|
||||||
@@ -59,6 +73,7 @@ h1,h2,h3 {
|
|||||||
<input type="submit" name="sa" value="Search" title="Search"/>
|
<input type="submit" name="sa" value="Search" title="Search"/>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
<div class="greytext">e.g. "ajax apis" or "open source"</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- end searchForm2 -->
|
<!-- end searchForm2 -->
|
||||||
@@ -71,15 +86,18 @@ h1,h2,h3 {
|
|||||||
<div id="codesiteContent">
|
<div id="codesiteContent">
|
||||||
<a name="gc-topnav-anchor"></a>
|
<a name="gc-topnav-anchor"></a>
|
||||||
<div id="gc-topnav">
|
<div id="gc-topnav">
|
||||||
|
|
||||||
<h1>Android Platform Development Kit</h1>
|
<h1>Android Platform Development Kit</h1>
|
||||||
<ul class="gc-topnav-tabs">
|
<ul class="gc-topnav-tabs">
|
||||||
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
<li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li>
|
||||||
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
<li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li>
|
||||||
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
<li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li>
|
||||||
|
|
||||||
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
<li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
<li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li>
|
||||||
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
<li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li>
|
||||||
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20eymaps_keyboard_input.html%20v0.3%20-%209%20June%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
<li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20eymaps_keyboard_input.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end gc-topnav -->
|
<!-- end gc-topnav -->
|
||||||
@@ -91,19 +109,18 @@ h1,h2,h3 {
|
|||||||
<h1><a href="index.html">Documentation</a></h1>
|
<h1><a href="index.html">Documentation</a></h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <strong>Introduction</strong>
|
<li> <strong>Introduction</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="system_requirements.html">Device Requirements</a></li>
|
<li><a href="system_requirements.html">Device Requirements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Dev Environment Setup</strong>
|
<li> <strong>Dev Environment Setup</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="source_setup_guide.html">Host System Setup</a></li>
|
|
||||||
<li><a href="getting_source_code.html">Getting Source Code</a></li>
|
|
||||||
<li> <a href="intro_source_code.html">Source Code Overview</a></li>
|
|
||||||
<li><a href="build_system.html">Build System</a></li>
|
<li><a href="build_system.html">Build System</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Basic Bring up</strong>
|
<li> <strong>Basic Bring up</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="build_new_device.html">Building New Device</a></li>
|
<li><a href="build_new_device.html">Building New Device</a></li>
|
||||||
<li><a href="bring_up.html">Bring up</a></li>
|
<li><a href="bring_up.html">Bring up</a></li>
|
||||||
@@ -111,26 +128,39 @@ h1,h2,h3 {
|
|||||||
<li><a href="display_drivers.html">Display Drivers</a></li>
|
<li><a href="display_drivers.html">Display Drivers</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li> <strong>Multimedia</strong>
|
<li> <strong>Multimedia</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="audio_sub_system.html">Audio Subsystem</a></li>
|
<li><a href="audio_sub_system.html">Audio</a></li>
|
||||||
|
<li><a href="camera.html">Camera</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Power Management</strong>
|
<li> <strong>Power Management</strong>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="power_management.html">Power Management</a></li>
|
<li><a href="power_management.html">Power Management</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li> <strong>Networking</strong>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wifi.html">Wi-Fi</a></li>
|
||||||
|
<li><a href="gps.html">GPS</a></li>
|
||||||
|
<li><a href="bluetooth.html">Bluetooth</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li> <strong>Telephony</strong>
|
<li> <strong>Telephony</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
<li><a href="telephony.html">Radio Interface Layer</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li> <strong>Testing</strong>
|
<li> <strong>Testing</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="instrumentation_framework.html">Instrumentation Framework</a></li>
|
|
||||||
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
<li><a href="instrumentation_testing.html">Instrumentation Testing</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -235,7 +265,7 @@ h1,h2,h3 {
|
|||||||
|
|
||||||
<p>The following code comes from <code>android/src/device/product/generic/tuttle2.kl</code> and is an example of a complete key layout file:</p>
|
<p>The following code comes from <code>android/src/device/product/generic/tuttle2.kl</code> and is an example of a complete key layout file:</p>
|
||||||
<pre class="prettify">
|
<pre class="prettify">
|
||||||
# Copyright 2007 The Android Open Source Project
|
# Copyright 2007 Google Inc.
|
||||||
|
|
||||||
key 2 1
|
key 2 1
|
||||||
key 3 2
|
key 3 2
|
||||||
@@ -300,7 +330,7 @@ key 49 N
|
|||||||
key 50 M
|
key 50 M
|
||||||
key 51 COMMA
|
key 51 COMMA
|
||||||
key 52 PERIOD
|
key 52 PERIOD
|
||||||
key 28 ENTER
|
key 28 NEWLINE
|
||||||
|
|
||||||
key 56 ALT_LEFT
|
key 56 ALT_LEFT
|
||||||
key 42 SHIFT_LEFT
|
key 42 SHIFT_LEFT
|
||||||
@@ -374,7 +404,7 @@ key 399 GRAVE
|
|||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<pre class="prettify">
|
<pre class="prettify">
|
||||||
# Copyright 2007 The Android Open Source Project
|
# Copyright 2007 Google Inc.
|
||||||
|
|
||||||
[type=QWERTY]
|
[type=QWERTY]
|
||||||
|
|
||||||
@@ -518,7 +548,7 @@ PLUS '+' '+' '+' '+' '+' '+'
|
|||||||
* of the macros is not meant to trivialize the work required, just as
|
* of the macros is not meant to trivialize the work required, just as
|
||||||
* an indication of where the work needs to be done.
|
* an indication of where the work needs to be done.
|
||||||
*
|
*
|
||||||
* Copyright 2007, The Android Open Source Project
|
* Copyright 2007, Google Inc.
|
||||||
* Based on goldfish-events.c
|
* Based on goldfish-events.c
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -677,7 +707,7 @@ I/KeyInputQueue( 1548): Keymap: partnerxx_keypad.kl
|
|||||||
pageTracker._trackPageview();
|
pageTracker._trackPageview();
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
</script>
|
</script>
|
||||||
<div id="jd-build-id"> v0.3 - 9 June 2008</div>
|
<div id="jd-build-id"> v0.6 - 25 November 2008</div>
|
||||||
</div></div></div></body>
|
</div></div></div></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
33
pdk/docs/main_8dox.html
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>main.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr><td></td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
37
pdk/docs/modules.html
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<title>Doxygen-Generated Content</title>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
.navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Generated by Doxygen 1.5.6 -->
|
||||||
|
<div class="navigation" id="top">
|
||||||
|
<div class="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||||
|
<li class="current"><a href="modules.html"><span>Modules</span></a></li>
|
||||||
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||||
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||||
|
<li><a href="files.html"><span>Files</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contents">
|
||||||
|
<h1>Modules</h1>Here is a list of all modules:<ul>
|
||||||
|
<li><a class="el" href="group__networking.html">Neworking Support</a>
|
||||||
|
<ul>
|
||||||
|
<li><a class="el" href="group__memory.html">Porividng Heap Memory</a>
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||