Android 摄像头拍照

CamareStress  main


package com.gigaset.camer;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import com.example.gigaset.R;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;


/**
 * @author toby.he 针对相机的压力功能测试
 * 
 */
@SuppressWarnings({ "deprecation" })
public class CamareStress extends Activity implements Callback, OnClickListener {


protected String TAG = "CamareStress";


private EditText time = null;
private EditText jiange = null;
private Button startButton = null;
private Camera mCamera;
private SurfaceView mSurfaceView;
private SurfaceHolder holder;
/** 是否在运行 */
private boolean mPreviewRunning = false;
Context context = CamareStress.this;


private ToggleButton tButton = null;
private ToggleButton changButton = null;
private Button pauseButton = null;
private Button stopButton = null;


Bitmap bitmap;
private int cameraPostion = 1; // 1代表后置 ,0 代表前置摄像头
/** 进度条 */
private ProgressBar progressBar = null;
/** 结果文本 */
private TextView resultTextView = null;


private int COUNT = 1; // 次数


private int DELAY = 1; // 间隔延时


// 自定义Handler信息代码,用以作为识别事件处理
protected static final int GUI_NOTIFIER = 0;
protected static final int GUI_STOP = 1;
protected static final int GUI_SUCCESS = 2;


// 进度条计数器
private int intcount = 0;


/** thread handler */
Handler threadHandler;


/** 总计次数 */
private int countall = 0;
/** 文本信息 */
private String text = null;
/** 间隔时间 */
private String jiangeString = null;


CameraInfo cameraInfo;


@Override
protected final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.camarestress);
findView();
holder = mSurfaceView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.threadHandler = new Handler();


/** 自动前后切换 */
changButton.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
if (changButton.isChecked()) {
Toast.makeText(getApplicationContext(), "手动状态切换到自动状态", Toast.LENGTH_SHORT).show();
tButton.setEnabled(false);
// resultTextView.setText("前后摄像头切换拍照");


} else {
Toast.makeText(getApplicationContext(), "自动状态切换到手动状态", Toast.LENGTH_SHORT).show();
tButton.setEnabled(true);
// changButton.setEnabled(false);
}
}
});


}


@Override
protected void onPause() {
super.onPause();
}


// 控件
private void findView() {
/** 前后置摄像头切换 */
this.tButton = (ToggleButton) findViewById(R.id.toggleButton1);
tButton.setOnClickListener(this);


this.jiange = (EditText) findViewById(R.id.jiange_ET); // 间隔
this.time = (EditText) findViewById(R.id.times_ET); // 次数
time.setText("1");
jiange.setText("3");


this.progressBar = (ProgressBar) findViewById(R.id.progressBar1);
progressBar.setProgress(0);


this.resultTextView = (TextView) findViewById(R.id.result);
resultTextView.setText("相机压力测试");
resultTextView.setGravity(Gravity.CENTER);


this.startButton = (Button) findViewById(R.id.start1); // 开始拍照
this.startButton.setOnClickListener(this);


this.pauseButton = (Button) findViewById(R.id.pause); //
pauseButton.setOnClickListener(this);


this.stopButton = (Button) findViewById(R.id.stop); // 停止
stopButton.setOnClickListener(this);


this.changButton = (ToggleButton) findViewById(R.id.toggleButton2);
// changButton.setVisibility(View.INVISIBLE);
changButton.setOnClickListener(this); // 自动切换


mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView1);


// 点击对焦
mSurfaceView.setOnClickListener(new OnClickListener() {


@Override
public void onClick(final View v) {
mCamera.autoFocus(mAutoFocusCallBack);
}
});
}


/** 按钮监听 */
public void onClick(View view) {
switch (view.getId()) {


case R.id.start1:
text = time.getText().toString();
jiangeString = jiange.getText().toString();
if (text.equals("")) {
COUNT = 1;
} else {
COUNT = Integer.parseInt(text);
countall = COUNT;
Log.i(TAG, "count的值确定-->" + COUNT);
}
if (jiangeString.equals("")) {
DELAY = 3;
} else {
DELAY = Integer.parseInt(jiangeString);
Log.i(TAG, "DELAY:" + DELAY);
if (DELAY < 3) {
DELAY = 3;
}
Log.i(TAG, "DELAY的值是-->" + DELAY);
}
/** 判断是否处于自动切换状态 */
if (tButton.isEnabled()) {
// 添加一个输入键盘隐藏
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
threadHandler.postDelayed(startRunnable, DELAY * 1000L);


} else {
// 自动前后切换
threadHandler.postDelayed(autoRunnable, DELAY * 1000L);
}


break;
case R.id.toggleButton1:
// 切换前后摄像头
int cameraCount = 0;
CameraInfo cameraInfo = new CameraInfo();
cameraCount = Camera.getNumberOfCameras();// 得到摄像头的个数
for (int i = 0; i < cameraCount; i++) {
Camera.getCameraInfo(i, cameraInfo); // 得到每一个摄像头的信息
if (cameraPostion == 1) {
// 现在是后置,变更为前置
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
/** * 记得释放camera,方便其他应用调用 */
releaseCamera();
// 打开当前选中的摄像头
mCamera = Camera.open(i);
// 通过surfaceview显示取景画面
setStartPreview(mCamera, holder);
mCamera.setDisplayOrientation(90);
cameraPostion = 0;
Log.e(TAG, "当前是前置,打开的摄像头是-->" + i);
break;
}
} else {
// 现在是前置, 变更为后置
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
/** * 记得释放camera,方便其他应用调用 */
releaseCamera();
mCamera = Camera.open(i);
setStartPreview(mCamera, holder);
mCamera.setDisplayOrientation(90);
cameraPostion = 1;
Log.e(TAG, "后置摄像头,打开摄像头的是-->" + i);
break;
}


}


}


break;
case R.id.pause:
Toast.makeText(getApplicationContext(), "暂停", Toast.LENGTH_SHORT).show();
break;
case R.id.stop:
Toast.makeText(getApplicationContext(), "stop", Toast.LENGTH_SHORT).show();
Message message = new Message();
message.what = GUI_STOP;
msgHandler.sendMessage(message);
threadHandler.removeCallbacks(autoRunnable);
Log.i(TAG, " startRun  & autoRun  stop");
break;


}


}


/**
* 单摄像头测试线程
**/
Runnable startRunnable = new Runnable() {


@Override
public void run() {


try {
takepicture();
} catch (InterruptedException e) {
e.printStackTrace();
}
intcount = COUNT - 1;
COUNT--;
Log.i(TAG, "  startRun  intcount的值是:" + intcount);
Message msg = new Message();
COUNT = intcount;
if (intcount > 0) {
threadHandler.postDelayed(startRunnable, DELAY * 1000);


msg.what = GUI_NOTIFIER;
msgHandler.sendMessage(msg);
return;
} else {
msg.what = GUI_SUCCESS;
msgHandler.sendMessage(msg);
}
threadHandler.removeCallbacks(startRunnable);
}


};


// 拍照
private void takepicture() throws InterruptedException {
if (mPreviewRunning && mCamera != null) {
Log.e(TAG, "takephoto拍照调用");
// mCamera.autoFocus(mAutoFocusCallBack);
mCamera.takePicture(shutterCallback, null, jpegCallback);


} else {
Toast.makeText(getApplicationContext(), "takephoto 调用失败", Toast.LENGTH_SHORT).show();
}
}


// 消息处理
@SuppressLint("HandlerLeak")
Handler msgHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case GUI_NOTIFIER:
progressBar.setProgress(countall - intcount + 1);
progressBar.setMax(countall);
Log.i(TAG, "GUI_STOP_NOTIFIER 的intcount-->" + intcount);
resultTextView.setText(
"总执行次数:" + countall + " 当前执行到:" + (countall - intcount) + "T  " + "间隔时间:" + DELAY + "S");
resultTextView.setTextSize(18);


break;


case GUI_SUCCESS:
resultTextView.setText("测试结果 :成功");
resultTextView.setTextSize(25);
resultTextView.setTextColor(Color.GREEN);
resultTextView.setGravity(Gravity.CENTER);
break;


case GUI_STOP:
threadHandler.removeCallbacks(startRunnable);
threadHandler.removeCallbacks(autoRunnable);
resultTextView.setText("停止拍照");
resultTextView.setGravity(Gravity.CENTER);
Log.v(TAG, "Runnable线程停止");
break;
}
};


};


// 释放 相机
private void releaseCamera() {


if (mCamera != null) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();// 停掉原来摄像头的预览
mCamera.release();
mCamera = null;


}


}


/**
* 设置camera显示取景画面,并预览

* @param camera
*/
private void setStartPreview(Camera camera, SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}


/**
* 自动切换到后摄并拍照
*/
Runnable autoRunnable = new Runnable() {


@Override
public void run() {
Log.e(TAG, "AutoRunable  Start ");
autotakepic();
intcount = COUNT - 1;
COUNT--;
Log.e(TAG, "AutoRunnable  intcount的值是:" + intcount);


threadHandler.postDelayed(autoRunnable2, 3000);
threadHandler.removeCallbacks(autoRunnable);
}


};


/**
* 自动切换到前摄并拍照
*/
Runnable autoRunnable2 = new Runnable() {


@Override
public void run() {
autotakepic2();
Message msg = new Message();


if (intcount > 0) {


threadHandler.postDelayed(autoRunnable, DELAY * 1000);
msg.what = GUI_NOTIFIER;
msgHandler.sendMessage(msg);
return;
} else {
msg.what = GUI_SUCCESS;
msgHandler.sendMessage(msg);
threadHandler.removeCallbacks(autoRunnable2);
}


}


};


/** 自动切换到后摄拍照 */
private void autotakepic() {
/** camera数量 */
cameraPostion = 1;
cameraInfo = new CameraInfo();
Camera.getCameraInfo(0, cameraInfo);


releaseCamera();
mCamera = Camera.open(0);
setStartPreview(mCamera, holder);
mCamera.setDisplayOrientation(90);
try {

Thread.sleep(3000);
mCamera.autoFocus(mAutoFocusCallBack);
takepicture();
} catch (InterruptedException e) {
e.printStackTrace();
}


}


/** 自动切换到前摄拍照 */
private void autotakepic2() {
/** camera数量 */
cameraInfo = new CameraInfo();
cameraPostion = 0;


releaseCamera();


Camera.getCameraInfo(1, cameraInfo);


mCamera = Camera.open(1);
setStartPreview(mCamera, holder);
mCamera.setDisplayOrientation(90);
try {


Thread.sleep(3000);
mCamera.autoFocus(mAutoFocusCallBack);
takepicture();
} catch (InterruptedException e) {
e.printStackTrace();
}


}


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
initCamera();


}


/**
* 初始化摄像头
*/
private void initCamera() {
if (mPreviewRunning) {
mCamera.stopPreview(); // 释放相机资源
}


if (null != mCamera) {
Parameters params = mCamera.getParameters();
params.setPictureFormat(PixelFormat.JPEG);// 设置图片格式
mCamera.setDisplayOrientation(90);


mCamera.setParameters(params);
try {
mCamera.setPreviewDisplay(holder); // 设置相机获取的图片在holder中显示
} catch (IOException e) {
e.printStackTrace();
}
mCamera.startPreview();


mPreviewRunning = true;
}


}


// 自动对焦功能
private AutoFocusCallback mAutoFocusCallBack = new AutoFocusCallback() {


@Override
public void onAutoFocus(boolean success, Camera camera) {


if (success) {
Log.e("AutoFocusCallback", "AutoFocusCallback" + success);
Camera.Parameters Parameters = mCamera.getParameters();
Parameters.setPictureFormat(PixelFormat.JPEG);// 设置图片格式
mCamera.setParameters(Parameters);
} else {
Log.e(TAG, "对焦失败.......");
}


}
};


@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
Log.e(TAG, "打开摄像头");
try {
mCamera.setPreviewDisplay(holder);
Log.e(TAG, "SurfaceHolder.Callback: surfaceCreated!");


} catch (IOException e) {
if (null != mCamera) {
mCamera.release();
mCamera = null;
}
e.printStackTrace();
}
}


@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e(TAG, "surfacedestoryed");
mCamera.stopPreview();
mPreviewRunning = false;
mCamera.release();
mCamera = null;
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
threadHandler.removeCallbacks(startRunnable);
threadHandler.removeCallbacks(autoRunnable);
threadHandler.removeCallbacks(autoRunnable2);
Log.v(TAG, "onkeydown keycode-back");
CamareStress.this.finish();
}
return super.onKeyDown(keyCode, event);
}


@Override
protected void onDestroy() {
CamareStress.this.finish();
super.onDestroy();
}




private ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
Log.e("ShutterCallback", "…onShutter…");


}
};


/* 给定一个Bitmap,进行保存 */
public void saveJpeg(Bitmap bm) {
String savePath = null;
if (intcount <= 1500) {
savePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "testphoto";
Log.e(TAG, "save bitmap的存储路径是 :" + savePath + "," + "incount的值是:" + intcount);
File folder = new File(savePath);
if (!folder.exists()) // 如果文件夹不存在则创建
{
folder.mkdir();
}
} else if (intcount >= 1501) {
savePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "testphoto"
+ String.valueOf(1000);
Log.e(TAG, "save bitmap的存储路径是 :" + savePath + "," + "incount的值是:" + intcount);
File folder2 = new File(savePath);
if (!folder2.exists()) // 如果文件夹不存在则创建
{
folder2.mkdir();
}


}
long dataTake = System.currentTimeMillis();
String jpegName = savePath + File.separator + dataTake + ".jpg";
Log.e(TAG, "saveJpeg:jpegName--" + jpegName);
// File jpegFile = new File(jpegName);
try {
FileOutputStream fout = new FileOutputStream(jpegName);
BufferedOutputStream bos = new BufferedOutputStream(fout);


bm.compress(Bitmap.CompressFormat.JPEG, 100, bos); // 压缩比例
bos.flush();
bos.close();
mCamera.stopPreview();
mCamera.startPreview();
bm.recycle();
Log.e(TAG, "saveJpeg:存储完毕!");
// Log.e(TAG, "拍照所需时间为-->" + (System.currentTimeMillis() -
// phototime)
// / 1000);
} catch (IOException e) {
Log.e(TAG, "saveJpeg:存储失败!");
e.printStackTrace();
}
}


private PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
Log.e(TAG, "…onPictureTaken…");
if (_data != null) {
bitmap = BitmapFactory.decodeByteArray(_data, 0, _data.length);
if (mPreviewRunning) {
mCamera.stopPreview();
mPreviewRunning = false;
}
}


Log.e(TAG, "_data!:" + (_data != null));
Log.e(TAG, "bitmap:" + (bitmap != null));


Matrix matrix = new Matrix();
matrix.postRotate((float) 90.0);


if (cameraPostion == 0) {
matrix.postRotate((float) -180.0);
}


Bitmap rotaBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);


// 保存图片到sdcard
if (null != rotaBitmap) {
saveJpeg(rotaBitmap);
}


Log.e(TAG, "rotaBitmap!:  " + (rotaBitmap != null));


// 再次进入预览
mCamera.startPreview();
mPreviewRunning = true;


}


};


}

camarestress.xml  布局文件 


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/times_TV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/times" />


        <EditText
            android:id="@+id/times_ET"
            android:layout_width="48dp"
            android:layout_height="wrap_content"
            android:layout_weight="773973.44"
            android:ems="10"
            android:inputType="number" >


            <requestFocus />
        </EditText>


        <Button
            android:id="@+id/start1"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:text="@string/start" />


        <Button
            android:id="@+id/stop"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:text="停止" />


        <Button
            android:id="@+id/pause"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:visibility="invisible" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <TextView
            android:id="@+id/qiehuan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/delay" />


        <EditText
            android:id="@+id/jiange_ET"
            android:layout_width="43dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.09"
            android:ems="10"
            android:inputType="number" />


        <ToggleButton
            android:id="@+id/toggleButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textOff="后置"
            android:textOn="前置" />


        <ToggleButton
            android:id="@+id/toggleButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textOff="非自动"
            android:textOn="自动"
            />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >


        <SurfaceView
            android:id="@+id/surfaceView1"
            android:layout_width="match_parent"
            android:layout_height="210dp"
            android:layout_weight="0.70" />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >


            <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="34dp" />


            <TextView
                android:id="@+id/result"
                android:layout_width="match_parent"
                android:layout_height="44dp" />
        </LinearLayout>
    </LinearLayout>


</LinearLayout>


Android mainifest 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.gigaset"
    android:versionCode="2"
  
    android:versionName="@string/version" >


    <!-- android:sharedUserId="android.uid.system" -->
     <!--  android:sharedUserId="android.uid.system" -->
    <!-- <uses-permission android:name="android.permission.REBOOT" /> -->
    <!-- <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> -->
    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="21" />


    <!-- 支持多种分辨率 -->
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />


    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />


    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
    <!-- 授予该程序录制声音的权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


     <uses-permission android:name="WRITE_SECURE_SETTINGS" />
    
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     
    <!-- 位置信息相关 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:theme="@style/_gigasettheme" >
        <activity
            android:name="com.gigaset.main.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.gigaset.main.GridActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.camer.CamareStress"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.main.HelpActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.lcd.DrawPaintMainActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.mediaRec.MediaVedioAct"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.server.AgentSerActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.webtest.WebTest"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustUnspecified|stateHidden" >
        </activity>
        <activity
            android:name="com.gigaset.manager.MyTelephoneManager"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.mediaRecord.MediaRecActivity"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.MobileDataStress.MobileStress"
            android:screenOrientation="portrait" >
        </activity>


        <!-- 数据连接 -->
        <activity
            android:name="com.gigaset.DataCon.DataConnectAct"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.gigaset.gps.GpsStressMain"
            android:screenOrientation="portrait" >
        </activity>




        <!-- 日志服务 -->
        <service android:name="com.gigaset.main.LogService" >
        </service>
        <!-- agentser -->
        <service android:name="com.gigaset.server.AgentServ" >
        </service>
        <!-- gigaset server -->
        <service android:name="com.gigaset.main.GigasetSer" >
        </service>


        <!-- <action android:name="android.intent.action.USER_PRESENT" /> -->
        <receiver android:name="com.gigaset.manager.ConnectionChangeRec" >
            <intent-filter>
                <action android:name="android.intent.action.CONTENT_CHANGED" />
                <action android:name="com.gigasetser.broadcast" />
            </intent-filter>
        </receiver>


        <activity
            android:name="com.gigaset.MobileDataStress.MobileDataTestActivity"
            android:label="@string/title_activity_mobile_data_test" >
        </activity>
    </application>


</manifest>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值