am 438ea813: Add Consumer IR ApiDemo

* commit '438ea813f1846f88205ff98436568aaa34f06845':
  Add Consumer IR ApiDemo
This commit is contained in:
Erik Gilling
2013-09-11 12:10:10 -07:00
committed by Android Git Automerger
4 changed files with 186 additions and 0 deletions

View File

@@ -32,6 +32,7 @@
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.TRANSMIT_IR" />
<!-- For android.media.audiofx.Visualizer -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
@@ -1199,6 +1200,17 @@
android:authorities="com.example.android.apis.content.FileProvider"
android:enabled="@bool/atLeastHoneycombMR2" />
<!-- ************************************* -->
<!-- HARDWARE PACKAGE SAMPLES -->
<!-- ************************************* -->
<activity android:name=".hardware.ConsumerIr" android:label="Hardware/Consumer IR">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
<!-- ************************************* -->
<!-- OS PACKAGE SAMPLES -->
<!-- ************************************* -->

View File

@@ -0,0 +1,50 @@
<?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.
-->
<!-- This activity exercises search invocation options -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/send_button"
android:text="@string/ir_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/get_freqs_button"
android:text="@string/ir_get_freqs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ScrollView
android:id="@+id/freqs_text_scroll"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<TextView
android:id="@+id/freqs_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="3dp"
android:paddingRight="3dp" />
</ScrollView>
</LinearLayout>

View File

@@ -460,6 +460,9 @@
<string name="activity_install_apk">Content/Packages/Install Apk</string>
<string name="ir_send">Send IR</string>
<string name="ir_get_freqs">Get Carrier Frequencies</string>
<!-- ============================== -->
<!-- app/intents examples strings -->
<!-- ============================== -->

View File

@@ -0,0 +1,121 @@
/*
* Copyright (C) 20013The 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.example.android.apis.hardware;
// Need the following import to get access to the app resources, since this
// class is in a sub-package.
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.hardware.ConsumerIrManager;
import android.view.View;
import android.widget.TextView;
import android.util.Log;
import com.example.android.apis.R;
/**
* App that transmit an IR code
*
* <p>This demonstrates the {@link android.hardware.ConsumerIrManager android.hardware.ConsumerIrManager} class.
*
* <h4>Demo</h4>
* Hardware / Consumer IR
*
* <h4>Source files</h4>
* <table class="LinkTable">
* <tr>
* <td>src/com.example.android.apis/hardware/ConsumerIr.java</td>
* <td>Consumer IR demo</td>
* </tr>
* <tr>
* <td>res/any/layout/consumer_ir.xml</td>
* <td>Defines contents of the screen</td>
* </tr>
* </table>
*/
public class ConsumerIr extends Activity {
private static final String TAG = "ConsumerIrTest";
TextView mFreqsText;
ConsumerIrManager mCIR;
/**
* Initialization of the Activity after it is first created. Must at least
* call {@link android.app.Activity#setContentView setContentView()} to
* describe what is to be displayed in the screen.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// Be sure to call the super class.
super.onCreate(savedInstanceState);
// Get a reference to the ConsumerIrManager
mCIR = (ConsumerIrManager)getSystemService(Context.CONSUMER_IR_SERVICE);
// See assets/res/any/layout/consumer_ir.xml for this
// view layout definition, which is being set here as
// the content of our screen.
setContentView(R.layout.consumer_ir);
// Set the OnClickListener for the button so we see when it's pressed.
findViewById(R.id.send_button).setOnClickListener(mSendClickListener);
findViewById(R.id.get_freqs_button).setOnClickListener(mGetFreqsClickListener);
mFreqsText = (TextView) findViewById(R.id.freqs_text);
}
View.OnClickListener mSendClickListener = new View.OnClickListener() {
public void onClick(View v) {
if (!mCIR.hasIrEmitter()) {
Log.e(TAG, "No IR Emitter found\n");
return;
}
// A pattern of alternating series of carrier on and off periods measured in
// microseconds.
int[] pattern = {1901, 4453, 625, 1614, 625, 1588, 625, 1614, 625, 442, 625, 442, 625,
468, 625, 442, 625, 494, 572, 1614, 625, 1588, 625, 1614, 625, 494, 572, 442, 651,
442, 625, 442, 625, 442, 625, 1614, 625, 1588, 651, 1588, 625, 442, 625, 494, 598,
442, 625, 442, 625, 520, 572, 442, 625, 442, 625, 442, 651, 1588, 625, 1614, 625,
1588, 625, 1614, 625, 1588, 625, 48958};
// transmit the pattern at 38.4KHz
mCIR.transmit(38400, pattern);
}
};
View.OnClickListener mGetFreqsClickListener = new View.OnClickListener() {
public void onClick(View v) {
StringBuilder b = new StringBuilder();
if (!mCIR.hasIrEmitter()) {
mFreqsText.setText("No IR Emitter found!");
Log.e(TAG, "No IR Emitter found!\n");
return;
}
// Get the available carrier frequency ranges
ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
b.append("IR Carrier Frequencies:\n");
for (ConsumerIrManager.CarrierFrequencyRange range : freqs) {
b.append(String.format(" %d - %d\n", range.getMinFrequency(),
range.getMaxFrequency()));
}
mFreqsText.setText(b.toString());
}
};
}