当前位置:文档之家› Android Camera开发(一)之基础知识

Android Camera开发(一)之基础知识

Android Camera开发(一)之基础知识
Android Camera开发(一)之基础知识

Android Camera开发(一)之基础知识概述

Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStore调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Camera程序。

基础知识

Android系统提供API来支持自定义相机拍照和系统拍照,以下是有关的类:

Camera

该类提供基础API来使用设备上的相机,且该类可以为你的应用提供拍照和录像相关的API。

SurfaceView

该类用于显示相机的预览数据。如果你对SurfaceView还不熟悉,请参考Android SurfaceView 的使用这篇文章。

MediaRecorder

该类提供相机录像相关的API。

注意事项

在你的应用程序能够在Android设备上使用相机之前,你应该考虑几个问题,那就是你的App打算如何使用相机拍照或者录像?

Camera需求的声明:

使用相机功能对于你的应用程序来说是否很重要并且你不希望你的应用程序被安装在没有相机的机器上?如果是这样,那么你需要把相机需求声明在配置文件里。

调用系统拍照还是自定义相机:

你的应用程序该如何使用相机?你是否仅仅需要拍摄一张照片或者一个视频,或者你的应用程序希望提供一种使用相机的新的方式?

存储:

是否你的应用生成的图片和视频仅对你的应用可见,还是其他应用程序例如相册或者其他的多媒体和社交App也可以使用它们?你是否希望你的应用程序被卸载后,这些照片和视频仍然可用,还是一起被删除?

权限申明

Camera Permission - 你的应用必须申请相机权限才可以使用设备相机。

注意:如果你使用Intent调用系统相机,你的应用无需申请该权限。

Storage Permission - 如果你的应用需要保存照片或者视频到设备存储中,你必须在Manifest

指定文件的写权限

Audio Recording Permission - 你必须申请录音权限才能使用相机来录像.

Location Permission - 当然如果你需要拍摄的照片记录地理位置,你同样需要申请如下权限

调用系统相机

你的应用可以通过发送一个Intent 到系统相机应用来实现抓取一张照片或者一段视频剪辑,然后将它们返回给你的应用。

使用camera intent调用系统相机流程如下:

(1)Compose a Camera Intent - 创建一个Intent请求用来拍照或者录像,有关的Intent类型如下:

MediaStore.ACTION_IMAGE_CAPTURE - 该Intent action 类型用于请求系统相机拍照。MediaStore.ACTION_VIDEO_CAPTURE - 该Intent action 类型用于请求系统相机录像。(2)Start the Camera Intent - 调用activity的startActivityForResult()方法来发送camera intent 请求拍照或者录像,当发送camera intent 以后,当前应用会跳转到系统相机应用app界面,让用户可以拍照或者录像。

(3)Receive the Intent Result - 在你的应用中实现onActivityResult()回调方法去接收来自系统相机的拍摄结果。该方法在用户完成拍照或者录像以后由系统调用。

系统拍照

代码如下,按上面的三步走:

button1.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent,

CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

}

});

...

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

/**

* 通过data取得数据

*/

if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {

Bundle extras = data.getExtras();

Bitmap bitmap = (Bitmap) extras.get("data");

image.setImageBitmap(bitmap);

}

}

但是,现在手机像素这么高,万一图片特别大呢,会不会data过大而FC呢?放心,Android 早就考虑到了,所以,data里面压根就不是完整的图片,它只是一张缩略图。所以,我们需要获取到拍摄的原图,就不能使用这种方法。但是我们可以这样做,我们可以指定MediaStore 类的一个EXTRA_OUTPUT来指定拍摄图像保存的位置,相当于建立一个临时文件。在onActivityResult中,我们不使用data来获取图像,而是直接去读这个临时文件即可。如果自己代码指定了保存图片的uri,data里面就不会保存数据。

button1.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

startActivityForResult(intent,

CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

}

});

...

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

/**

* 通过存储Uri取得数据

*/

if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {

if (resultCode == RESULT_OK) {

image.setImageURI(getOutputMediaFileUri(MEDIA_TYPE_IMAGE));

}

}

}

这样我们就可以获取到完整的拍摄图片了。后面你可以让图像显示出来。

下面来看看保存多媒体文件:

拍照或者录像生成的多媒体文件需要保存到手机存储目录中(SD Card),所以在应用中必须

有往手机中写文件的权限。一般可以有多种本地路径来保存多媒体文件,但是主要有如下两种常用的路径:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)

该方法返回一个标准的外部存储路径去保存照片和视频。这个路径是公共的,所以其他应用也可以访问,修改,删除该路径下的照片和视频,如果你的应用被卸载了,媒体文件依然存在本地储存中。为了避免和其他多媒体文件混淆,你应该在公共目录下创建一个子目录来保存你自己应用中的多媒体数据。

Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)

该方法返回一个标准的,唯独当前应用自己可见的路径去保存照片和视频。如果该应用被卸载,在该目录下的所有多媒体数据将会被移除。但是有一个好处就是其他应用无法去访问,修改,删除该路径下的文件。

如下示例代码演示如何创建一个路径用来保存照片和视频:

public static final int MEDIA_TYPE_IMAGE = 1;

public static final int MEDIA_TYPE_VIDEO = 2;

/** Create a file Uri for saving an image or video */

private static Uri getOutputMediaFileUri(int type){

return Uri.fromFile(getOutputMediaFile(type));

}

/** Create a File for saving an image or video */

private static File getOutputMediaFile(int type){

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "WatsonCamera");

if (! mediaStorageDir.exists()){

if (! mediaStorageDir.mkdirs()){

return null;

}

}

File mediaFile;

if (type == MEDIA_TYPE_IMAGE){

mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_watson.jpg");

} else if(type == MEDIA_TYPE_VIDEO) {

mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_watson.mp4");

} else {

return null;

}

return mediaFile;

}

系统录像

发送Intent录像携带的外部数据extra的信息如下:

MediaStore.EXTRA_OUTPUT

该关键字和拍照使用的关键字一样,意思就是制定一个路径和文件名来构建一个Uri对象来保存录像结果。

MediaStore.EXTRA_VIDEO_QUALITY

该关键字用于指定拍摄的录像质量,参数0表示低质量,参数1表示高质量。MediaStore.EXTRA_DURA TION_LIMIT

该关键之用于指定拍摄的录像的时间限制,单位是秒。

MediaStore.EXTRA_SIZE_LIMIT

该关键字用于指定拍摄的录像文件大小限制,单位值byte。

代码如下,按上面的三步走:

button2.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);

intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

startActivityForResult(intent,

CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);

}

});

...

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {

if (resultCode == RESULT_OK) {

image.setVisibility(View.VISIBLE);

video.setVisibility(View.GONE);

image.setImageURI(getOutputMediaFileUri(MEDIA_TYPE_IMAGE));

}

} else if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) { if (resultCode == RESULT_OK) {

video.setVisibility(View.VISIBLE);

image.setVisibility(View.GONE);

video.setVideoURI(getOutputMediaFileUri(MEDIA_TYPE_VIDEO));

video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

video.start();

}

});

video.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

if (null != video) {

video.stopPlayback();

}

}

});

}

}

}

自定义相机

创建一个自定义的相机app基本遵循如下步骤:

检测和访问相机:

首先代码检测该设备相机是否存在,如果存在才能请求访问设备相机。

创建一个预览来显示相机图像:

在你的布局中使用SurfaceView控件,然后在代码中继承SurfaceHolder.Callback接口并且实现接口中的方法来显示来自相机的图像信息。

设置相机基本参数:

根据需求设置相机预览尺寸,图片大小,预览方向,图片方向等。

设置拍照录像监听:

当用户按下按钮时调用Camera.takePicture()或者MediaRecorder.start()来进行拍照或录像。文件保存:

当拍照结束或者录像视频结束时,需要开启一个后台线程去保存图片或者视频文件。

释放相机资源:

Camera硬件是一个共享资源,所以你必须小心的编写你的应用代码来管理相机资源。一般在Activity的生命周期的onResume中开启相机,在onPause中释放相机。

注意: 当你不在使用相机资源时,记得调用Camera.release()方法来释放相机资源,否则其他应用甚至你自己的应用再次请求访问设备相机时会失败,并且crash。

检测相机硬件是否存在

一般情况,我们会在运行代码时检测该设备是否有相机硬件,如果有相机硬件,才进一步去

访问相机,如下是检测相机硬件是否存在是代码示例:

/** Check if this device has a camera */

private boolean checkCameraHardware(Context context) {

if

(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){ return true;

} else {

return false;

}

}

Android 设备可以有多个相机硬件,现在一般手机都是前后两个camera,因此我们在Android2.3以后也可以使用Camera.getNumberOfCameras()方法来获得当前设备camera个数来判断相机硬件是否存在。

创建Camera预览

Camera预览布局文件:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/record_navigation_bar"

android:layout_width="match_parent"

android:layout_height="48dp"

android:background="#F8F8F8" >

android:id="@+id/record_act_back"

android:layout_width="25dp"

android:layout_height="31dp"

android:layout_centerVertical="true"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:src="@drawable/icon_ll_back" />

android:id="@+id/camera_preview"

android:layout_width="match_parent"

android:layout_height="fill_parent"

android:layout_above="@+id/record_bottom_bar"

android:layout_below="@+id/record_navigation_bar" />

android:id="@+id/record_bottom_bar"

android:layout_width="match_parent"

android:layout_height="60dp"

android:layout_alignParentBottom="true"

android:background="@drawable/recording_bottom_bar_bg_interview" >

android:id="@+id/btn_start_recording"

android:layout_width="58dp"

android:layout_height="58dp"

android:layout_centerInParent="true"

android:background="@drawable/recording_act_vedio_start" />

android:id="@+id/btn_change_module"

android:layout_width="45dp"

android:layout_height="35dp"

android:layout_centerVertical="true"

android:layout_marginLeft="30dp"

android:background="@drawable/change_module_photo" />

android:layout_width="wrap_content"

android:layout_height="30dp"

android:layout_alignParentRight="true"

android:layout_below="@+id/record_navigation_bar"

android:layout_marginRight="10dp"

android:layout_marginTop="10dp"

android:gravity="center_vertical" >

android:id="@+id/record_video_tip"

android:layout_width="15dp"

android:layout_height="15dp"

android:layout_marginRight="10dp"

android:background="@drawable/record_video_tip" />

android:id="@+id/record_video_time"

android:layout_width="wrap_content"

android:layout_height="30dp"

android:layout_marginRight="10dp"

android:gravity="center_vertical"

android:text="00:00"

android:textColor="@android:color/white"

android:textSize="17sp" />

然后,我们创建一个Activity,用来展示Camera的预览,那么在这个Activity里面,我们需要做什么呢?两件事情:

初始化相机

将内容显示到SurfaceView

Android的Camera是独享的,如果多处调用,就会抛出异常,所以,我们需要将Camera的生命周期与SurfaceView的生命周期绑定:

surfaceCreated方法中初始化相机

surfaceDestroyed方法中释放相机

初始化相机非常简单:

private Camera getCamera() {

Camera camera;

try {

camera = Camera.open();

} catch (Exception e) {

camera = null;

}

return camera;

}

注意: 在调用Camera.open()方法时总是要去捕获一个异常,以免打开相机设备失败导致整个应用crash。在Android2.3以及更高api上,你可以使用Camera.open(int)来打开指定的相机。以上代码示例总是默认打开后置camera,一般情况参数为0表示打开后置camera,参数为1表示打开前置camera。

释放相机也非常简单:

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

if (camera != null) {

try {

camera.setPreviewCallback(null);

camera.stopPreview();

camera.release();

camera = null;

} catch (Exception e) {

e.printStackTrace();

}

}

}

那么下面我们再来看如何把相机图像设置到SurfaceView中进行预览:

@Override

public void surfaceCreated(SurfaceHolder holder) {

try {

camera = getCamera();

camera.setPreviewDisplay(holder); //camera关联到SurfaceView

camera.setDisplayOrientation(90); //旋转90度

camera.startPreview(); //开始预览

} catch (Exception e) {

finish();

}

}

是不是也非常简单,camera的一个方法已经帮我们自动关联了SurfaceView。

这里需要注意下这个方法camera.setDisplayOrientation(90),通过这个方法,我们可以调整摄像头的角度,不然默认是横屏,图像会显示的比较奇怪。当然,即使你设置了90,图像也有可能比较奇怪,这是因为你没有对图像进行正确的缩放,比例不对。

通过上面的设置,我们已经可以正常预览摄像头的图像内容了。

拍照

一旦你创建了camera preview并且加载到布局中可以实时显示预览画面了,此时就可以进行拍照了。为了配合拍照,我们需要做一些设置,设置拍照参数,当然你也可以不设置而使用默认参数,默认参数基本上就能满足我们的要求。

Camera.Parameters params = mCamera.getParameters();

params.setPictureFormat(ImageFormat.JPEG);

params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);

mCamera.setParameters(params);

//自动聚焦

camera.autoFocus(new AutoFocusCallback() {

public void onAutoFocus(boolean success, Camera camera) {

if (success)

System.out.println("聚焦成功!");

else

System.out.println("聚焦失败!");

}

});

在代码中你应该实现一个监听回调来捕获用户拍照的行为。可以调用camera.takePciture()方法来进行拍照。

public final void takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback jpeg);

该方法接受三个参数,第一个参数ShutterCallback响应快门的接口,第二个参数PictureCallback接收raw格式的图片数据,第三个参数PictureCallback接收jpeg格式的图片数据。为了保存图片数据,你可以根据需要实现以上三个接口。此处我们暂且实现第三个PictureCallback接口回调。示例代码如下:

//拍照

if (camera != null) {

camera.takePicture(null, null, mPictureCallback);

}

//第三个PictureCallback接口回调,通过data[]保持图片数据信息

private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { @Override

public void onPictureTaken(byte[] data, Camera camera) {

File pictureFile = MainActivity.getOutputMediaFile(MEDIA_TYPE_IMAGE);

if (pictureFile == null){

return;

}

try {

FileOutputStream fos = new FileOutputStream(pictureFile);

fos.write(https://www.doczj.com/doc/e55252668.html,ta);

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

Toast.makeText(RecordVedioAct.this, "图像已保存", Toast.LENGTH_SHORT).show();

camera.startPreview(); //拍完继续预览

}

};

录像

Camera视频录像不仅涉及到Camera类还用到了MediaRecorder类。当你使用Camera录像时,你应该调用Camera.lock()和Camera.unlock()来管理camera硬件,允许MediaRecorder 访问camera硬件。你应该在camera和MediaRecorder关联之前调用Camera.unlock()来解锁camera,允许MediaRecorder访问Camera,在释放MediaRecorder资源以后调用Camera.lock()来锁定camera以保证camera硬件资源的共享性。

注:在Android4.0以后,系统会自动管理camera.unlock()以及camera.lock(),无需用户自己管理。

启动录像流程需要一个指定调用顺序,如下是详细的步骤流程:

(1)Open Camera –使用Camera.open()静态方法来获得camera对象实例。

(2)Connect Preview –使用camera.setPreviewDiaplay(holder)方法将相机的预览画面显示在SurfaceView控件上。

(3)Start Preview –使用camera.startPreview()方法开始启动预览画面。

(4)Start Recording Video –必须完成以下步骤才能正常开始正常录音:

Unlock the Camera - 调用camera.unlock()方法解锁camera,使得MediaRecorder进程能访问Camera硬件。

Configure MediaRecorder - 在这一步,分别调用MediaRecorder类中如下方法来配置MediaRecorder:

/**配置MediaRecorder*/

recorder.setCamera(camera); //设置camera用于录像

recorder.setOutputFile(filePath); //设置输出文件路径

recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置录像音频来源

recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //设置录像视频来源recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //设置视频的输出格式recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //设置视频的编码格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置音频的编码格式/**输出格式和编码格式,对于Android2.2或者更高版本使用MediaRecorder.setProfile方法即可,使用方法CamcorderProfile.get()来获得一个配置信息*/

recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); setPreviewDisplay(holder.getSurface()) //为MediaRecorder指定预览显示

注意:在这一步,你必须调用MediaRecorder类中的以上全部方法来配置MediaRecorder,否则你的应用将无法正常录像并且报错。

由于录像默认设置了很多参数,无需用户太关心更细节的参数设置,但是如果需要在你的应用中修改这些默认参数设置,你可以使用如下方法来修改默认参数:

recorder.setAudioEncodingBitRate(); //设置音频编码的字节率

recorder.setVideoEncodingBitRate(); //设置视频编码的字节率

recorder.setOrientationHint(tureAngle); //设置MediaRecorder旋转角度

recorder.setAudioSamplingRate(); //设置音频采样率

recorder.setMaxDuration(5 * 60 * 1000); //设置最大录制时间

recorder.setVideoSize(640, 480); //设置视频尺寸大小,在setVideoSource()和setOutFormat()之后

recorder.setVideoFrameRate() //设置视频帧率,在setVideoSource()和setOutFormat()之后recorder.setAudioChannels(); //设置音频的频道数目,参数一般1/2

Prepare MediaRecorder - 在配置完MediaRecorder参数之后调用mediaRecorder.prepare()方法来准备MediaRecorder。

Start MediaRecorder - 调用mediaRecorder.start()方法启动录像。

(5)Stop Recording Video –当你结束录像时调用如下方法:

Stop MediaRecorder - 首先调用mediaRecorder.stop()方法停止多媒体录像。

Reset MediaRecorder - 调用mediaRecorder.reset()方法重置多媒体状态,调用该方法之后之前的所有MediaRecorder configuration将被移除,你如果还想再次录像,需要再次配置多媒体参数。

Release MediaRecorder - 调用mediaRecorder.release()方法释放多媒体资源。

Lock the Camera - 调用camera.lock()方法来给Camera硬件加锁。在Android4.0及以后无需调用该方法,除非在调用mediaRecorder.prepare()失败时,才需要再次调用该方法。

(6)Stop the Preview - 当你的Activity已经不再使用camera时,调用camera.stopPreview()方法来停止预览。

(7)Release Camera - 当不再使用Camera时,调用camera.release()方法来释放camera,以便其他应用可以使用camera资源。

注意: 当完成一段视频录像时,不要马上去释放camera资源或者停止当前预览,因为有可能用户会再次启动录像操作。本文中将camera释放操作放在surfaceDestroyed里面。

如下代码演示在button的点击事件中去启动和停止视频录像操作:

/**录像*/

if (isRecording) {

stopRecord();

} else {

startRecord();

}

// 开始录像

private void startRecord() {

if (prepareVideoRecorder()) {

mediaRecorder.start();

//修改状态

isRecording = true;

Toast.makeText(RecordVedioAct.this, "开始录像", Toast.LENGTH_SHORT).show();

btn_start_recording.setBackgroundResource(R.drawable.recording_act_vedio_stop);

start_time = 0;

timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

start_time++;

handler.sendEmptyMessage(0);

}

}, 0, 1000);

} else {

mediaRecorder.release();

camera.lock();

}

}

// 停止录像

private void stopRecord() {

mediaRecorder.stop();

mediaRecorder.reset();

mediaRecorder.release();

camera.lock();

//修改状态

isRecording = false;

btn_start_recording.setBackgroundResource(R.drawable.recording_act_vedio_start);

timer.cancel();

record_video_tip.setVisibility(View.VISIBLE);

Toast.makeText(RecordVedioAct.this, "录像已保存", Toast.LENGTH_SHORT).show();

}

private boolean prepareVideoRecorder(){

mediaRecorder = new MediaRecorder();

camera.unlock();

mediaRecorder.setCamera(camera);

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);

mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

mediaRecorder.setOutputFile(MainActivity.getOutputMediaFile(MEDIA_TYPE_VIDEO).toStrin g());

mediaRecorder.setPreviewDisplay(myHolder.getSurface());

try {

mediaRecorder.prepare();

} catch (Exception e) {

mediaRecorder.release();

camera.lock();

return false;

}

return true;

}

好了,就讲到这里,回顾一下,本文主要讲解了如何调用系统Camera应用来进行拍照和拍摄以及如何自定义自己的Camera应用实现拍照和拍摄功能。

Android开发入门教程经典解析-JAVA语言

Android入门教程之Java核心技术阶段初级课程,从知识分类来说,可以分为三个部分来说明: (一)基础语法: 讲解Java发展史,Java环境搭建,环境变量配置,Java程序的基本结构,java和javac命令的使用,Notepad++工具的使用,语法格式,变量和常量,二进制转换,运算符、表达式,分支结构和循环结构语句,数组与多维数组,冒泡排序,二分查找,随机生成一组不重复的数算法,通过模拟一个双色球案例,把基础语法容融会贯通,打下扎实的基础。 (二)面向对象: 讲解Java中的OOP/OOD/OOA的知识,深入讲解OOP的封装、继承、多态、抽象的概念与实际应用,涉及内容为类与对象的定义和关系,封装分别在Java EE开发和Android开发中的不同,对象的引用传递,对象的内存分配和GC,构造方法和匿名对象,如何开发和定义一个类,深入讲解String类的原代码原理内部实现、特性和内存管理,通过四种字符串连接时的场景分析来深入理解Java编译期和运行期的区别,String的相关操作方法;static 关键字,构造方法私有化,对象数组与动态数组的实现原理,链表数据结构,内部类及优缺点,在EE开发和Android开发的区别和经验;继承的思想,方法重写与重载,super关键字,抽象类、接口和多态的思想,以及真实环境中的应用,Object类,包装类与特性,包与修饰符;课程贯彻的设计模式有:单例模式、工厂模式、策略模式、适配器模式、模板方法模式、代理模式。以及OO设计中的六大原则。通过本节课程你可以彻底理解什么是面向对象编程,加以时日练习,必成大器。 (三)Eclipse与异常处理 异常的基本处理格式和5大关键字的联合使用,Java中异常处理的新特性,自定义异常类,编译时异常与运行时异常的区别,JVM对异常的处理过程,经过前两节课程共两周多的Notepad++写代码,已经达到了纯手写代码的目的,本节课程开始引入了99.9%的程序员都在使用的集成开发环境Eclipse,他对异常调试的强大支持,会让你叹为观止,当然Eclipse 不仅仅只有这些,在这里,你将一一学到。 Android入门教程之Java核心技术阶段中级课程,Java基础、面向对象、Java高级开发,讲解以下内容: (一)常用类库API与算法 讲解StringBuffer类的内部原理,分析原代码实现,与String的区别与应用经验,如何实现国际化程序,日期操作API,Comparable的两种实现,对象克隆,Arrays工具类、Math 工具类、Random类的使用,选择排序算法和二叉树数据结构实现,通过本节课程,你将学到常用类库API和工作中最最常见的排序算法和二叉树,本节过后,你的功力又增强了。 (二)IO与New IO

一看就懂的Android APP开发入门教程

工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣。于是凌晨一点睡不着写了第一个android程序HelloAndroid,po出来分享给其他也想学习android开发的朋友,这么傻瓜的Android开发入门文章,有一点开发基础的应该都能看懂。 一、准备工作 主要以我自己的开发环境为例,下载安装JDK和Android SDK,假如你没有现成的IDE,你可以直接下载SDK完整包,里面包含了Eclipse,如果有IDE那么你可以滚动到下面选择U SE AN EXISTING IDE,然后安装SDK,如果你的SDK在安装时找不到JDK目录,你可以在系统环境变量里添加JAVA_HOME变量,路径为你的JDK目录,我的IDE是IntelliJ IDEA,都装好以后开始配置IDE增加SDK支持。 首先,打开Android SDK Manager把Android 4.0以上版本的未安装的都打勾装上,根据你个人实际情况,如果你只打算用自己的手机测试,那就把你机子系统一样版本的SDK包装上,下载时间有点长。

然后打开IDE创建新项目,IDEA比较智能,如果你装好了SDK,新建项目里就会出现Andro id的Application Module,选择后右边Project SDK为空,点击New按钮,找到SDK目录确定,下拉列表就会列出已经安装的各个版本的SDK,选择自己需要的版本,如果是第一次设置,IDE会提醒你先设置JDK,根据提示找到JDK目录即可。

Android应用开发基础习题集

任务一 Android开发环境的搭建 第一部分知识回顾与思考 1.Android的四层架构分别包括哪几层分别起到什么作用 答:Linux内核层(Linux Kernel):基于Linux内核,内核为上层系统提供了系统服务。 系统库层(Libraries):系统库基于C/C++语言实现,通过接口向应用程序框架层提供编程接口。 应用框架层(Application Framework):为开发者提供了一系列的Java API,包括图形用户界面组件View、SQLite数据库相关的API、Service组件等。 应用程序层(Applications):包含了Android平台中各式各样的应用程序。 第二部分职业能力训练 一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内) 1.Android四层架构中,应用框架层使用的是什么语法( C ) A.C B.C++ C.Java D.Android 2.Android四层架构中,系统库层使用的是什么语法( B ) A.VB B.C /C++ C.Java D.Android 3.应用程序员编写的Android应用程序,主要是调用( B )提供的接口进行实现。 A.应用程序层 B.应用框架层 C.应用视图层 D.系统库层 二、填空题(请在括号内填空) 1.在Android智能终端中,有很多应用如拍照软件、联系人管理软件,它们都属于Android的(应用程序)层。 2.为了让程序员更加方便的运行调试程序,Android提供了(模拟器),可以方便的将程序运行其上,而不要实际的移动终端。 3.为了支持Java程序运行,我们需要安装(JDK)。 三、简答题 1.简述Android开发环境安装的步骤。 答:下载并安装JDK,配置JDK的环境变量; 从Anroid官网上下载Android开发组件(包含Eclipse和Android SDK、ADT); 安装Android开发环境(包括配置Android SDK的环境变量、打开Eclipse通过菜单设定Android SDK 路径)。 2.简述Android应用程序创建和运行的步骤。 答:通过菜单创建Android应用程序,设置应用程序名、Android版本等基本信息。

Android手机分辨率基础知识(DPI_DIP计算)

比如:计算WVGA(800*480)分辨率,3.7英寸的密度DPI

图1 Diagonal pixel 表示对角线的像素值(=),DPI=933/3.7=252 3.手机屏幕的分类 3.1根据手机屏幕密度(DPI)或屏幕尺寸大小分为以下3类,如图2所示 图2 3. 2手机屏幕分类和像素密度的对应关系如表1所示:

图3 从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机4 UI设计 从开发角度讲,应用程序会根据3类A ndroid手机屏幕提供3套UI布局文件,但是相应界面图标也需要提供3套,如表2所示

需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout- small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间) 2)图片资源方面 需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi Android有个自动匹配机制去选择对应的布局和图片资源 分享到:?上一篇:分享摩托罗拉milestone手机升级到Android 2.2的过程 ?下一篇:基于feng streaming server 搭建Android直播测试平台 查看评论 7楼pc0de 2011-12-16 17:11发表[回复] 谢谢分享啊 6楼yang_hui198**** ****-11-19 16:44发表[回复] 很强大!!!很喜欢!!! 3楼noICE1 2011-08-16 14:59发表[回复]

Android编程基础笔试题及答案2.0

《Android 编程基础》试卷A 注意事项: 1. 本试卷共8页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共35题,共61分) 1、 D03MA057(2分)退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a A 、onPause() B 、onCreate() C 、onResume() D 、onStart() 2、 D02MA058 (2分) Android 项目工程下面的 assets 目录的作用是什么 b A 、放置应用到的图片资源。 Res/drawable B 、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C 、放置字符串,颜色,数组等常量数据 res/values D 、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 3、 D04MA059 (2分)下列不属于android 布局的是(c) A 、F r a m e L a y o u t B 、L i n e a r L a y o u t C 、BorderLayout D 、T a b l e L a y o u t E 、R e l a t i v e L a y o u t 4、 D08MA2060 (2分)Intent 的作用的是 a A 、intent 是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据, B 、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切 换页面而消失 service C 、实现应用程序间的数据共享 contentprovider D 、处理一个应用程序整体性的工作 5、 D04EA1061(1分) 下列哪个是AbsoluteLayout 中特有的属性 b A,android:layout_height B,android:layout_x C,android:layout_above D,android:layout_toRightOf 6、 D07EA1062(1分)RatingBar 组件中不能用属性直接设置的是d A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩 7、 D 10EA1063(1分) 在手机开发中常用的数据库是_a__ A,sqlLite B,Oracle C,Sql Server D,Db23 8、 D14MA2064(2分) 关于BroadcastReceiver 的说法不正确的是_b_ A, 是用来接收广播Intent 的 密封线内不要答 题 学院班级姓名

Android开发的核心知识

想要学习移动应用的开发,除了必备的知识要掌握好之外,更多的是要掌握一些核心的基础知识,并且是能够起到关键性作用的知识点,必须是要了解清楚,如果你也是在学习Android开发,下面的核心基础或者对你有一定的帮助! 1.ListView的引入 为什么要采用listview?其实是在数据量过于庞大时,传统的存储方式它是会占用机器大量内存,最终导致OOM异常(内存溢出),listview的出现将会是有效的解决这个弊端的出现。 重点来了listview如何使用呢? res/layout布局文件中定义listview src的java代码里面关心控件findviewbyid(R.id.listview); 创建适配器对象,适配器继承baseAdapter接口 2.构造方法 getCount();控制listview的条目数 getView();得到当前条目视图 View.inflate();布局填充器 设置适配器:setAdapter(adapter); 设置listview列表项的点击事件:setOnClickLinsstener();

通知listview更新数据:adapter.notifyDataSetChanged(); 3.对话框的使用 *普通对话框 *单选对话框 *多选对话框 *进度对话框 *进度条对话框 *自定义对话框 布局填充器:Viewview=View.inflate(Context,https://www.doczj.com/doc/e55252668.html,yout.dialog,null); 核心API:dialog.setView(view); 4.常见的一些适配器的使用 *数组适配器:ArrayAdapter *简单适配器:SimpleAdapter 5.数据库的常见的事务 为什么需要需要定义数据库事务?最主要的还是为了保证多条操作语句同步执行 6.数据库事务执行流程 db.beginTransaction();开启事务 db.setTransactionSuccessful();设置事务执行成功 db.endTransaction();结束事务 7.样式和主题 样式的作用在单独的UI控件上面 主题的作用它是在activity或者application上 以上的这些功能控件、数据库等这些是开发中必备的功能,在开发中只要这些基本的核心知识都掌握了,那么这对你接下里的进一步开发是比较有帮助的。

(完整版)心理学研究方法

福建省高等教育自学考试应用心理学专业(独立本科段) 《心理学研究方法》课程考试大纲 第一部分课程性质与目标《心理学研究方法》是福建省高等教育自学考试应用心理学专业(独立本科段)的一门专业基础必修课程,目的在于帮助考生了解和掌握心理学研究的理论基础和主要方法,检验考生对心理学研究理论基础与主要方法,检验考生对心理学研究方法的基本知识和主要内容的掌握水平与应用能力。 心理学研究的对象是心理现象。它的研究主题十分广泛:即涉及人的心理也涉及动物的心理;即涉及个体的心理也涉及群体的心理;即涉及有意识的心理也涉及潜意识的心理;即涉及与生理过程密切相关的心理也涉及与社会文化密切相关的心理。心理学研究是一种以经验的方式对心理现象进行科学探究的活动。由于心理学的研究方法是以经验的或实证的资料为依据的,因而使心理学与哲学相区别,也与人文学科相区别。 设置本课程的具体目的要求是,学习和掌握心理学研究方法的基本理论和基本技能,将有助于学生们理解心理学的基本概念、基本原理和基本理论。理解心理学家在探索心理与行动时所做的一切,有助于考生将来为心理学的发展做出有益的贡献。 第二部分考核内容与考核目标 第一编心理学研究基础 第一章心理学与科学 一、学习目的与要求 通过本章学习,要求考生了解心理学的性质,了解心理学科学研究的方法、特征及基本步骤,理解心理学研究的伦理问题和伦理规范。 二、考核知识点与考核目标 1、识记: (1)心理学的含义; (2)心理学科学研究的特征:系统性、重复性、可证伪性和开放性; (3)知情同意。 2、领会: (1)一般人探索世界的常用方法; (2)心理学研究主要包含哪几个步骤; (3)科学研究的开放性主要表现在哪几方面; 3、应用: (1)根据科学研究的特征来分析某些心理学的研究; (2)心理学研究的伦理问题及以人为被试的研究的伦理规范来分析是否可以在心理学研究中使用欺骗的方法。

Android应用开发基本知识点汇总

Android应用开发基本知识点汇总 Activity 一生命周期 4种状态 running / paused / stopped / killed 生命周期 Activity启动 onCreate -> onStart -> onResume 点Home返回主界面 onPause -> onStop 再次回到原Activity onRestart -> onStart -> onResume 退出Activity onPause -> onStop -> onDestroy 进程优先级前台/可见/服务/后台/空 二任务栈 三启动模式 standard singleTop 栈顶复用 singleTask 栈内复用 singeInstance 四scheme跳转协议 服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面 Fragment 一第五大组件 为什么是第五大组件 Fragment相对Activity更节省内存,切换更舒适Fragment加载到Activity的两种方式 静态加载xml 动态加载fragmentTransaction.add(id, fragment, “name”); .commit; FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况FragmentPagerAdapter并没有回收内存,只是detach了Activity 二生命周期 onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 先创建Activity后创建Fragment,先销毁Fragment后销毁Activity 三Fragment之间的通信 Fragment调用Activity getActivity Activity调用Fragment 接口回调 Fragment调用Fragment方法findFragmentById 四FragmentManager replace add remove Service 一应用场景,与Thread区别 Service是什么后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作 Service与Thread区别 Activity难以与Thread交互,尤其当Activity销毁以后 二开启Service的两种方式 StartService onCreate -> onStartCommand -> onBind -> onDestroy onStartCommand return START_STICKY;

Android开发入门教程

第一篇:安装SDK 这里主要介绍如何安装Android的SDK开发包和配置开发环境。如果你还没有下载SDK,点击下面的链接开始。 Download the Android SDK 系统和软件配置要求 要通过Android SDK中提供的代码和工具进行Android应用程序的开发,需要一个合适的用于开发的电脑和合适的开发环境,具体要求如下: 支持的开发环境 Eclipse Eclipse 3.2,3.3(Europa) Android开发工具插件(可选) 其他的开发环境或者IDE JDK5.0或者JDK6.0(仅有JRE是不够的) 安装SDK 下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,我们默认你的SDK安装目录为$SDK_ROOT 你可以选择将$SDK_ROOT/tools加入到你的路径中 1.Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/t ools的完整路径加入其中。如果没有找到设定PATH变量的行,你可以自己添加一行: export PATH=${PATH}:<你的$SDK_ROOT/tools的完全路径> 2.Mac下,在你的home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,你可以创建一个.bash_profile文件。 3.Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。 通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。需要注意到是,当你升级了SDK后,如果安装路径有变动的话,不要忘记了更新你的PATH变量的设置,将其指向变动后的路径。 安装Eclipse插件(ADT) 如果你选择Eclipse作为Android的开发环境,可以安装一个专门为Android定制的插件:Android Deve lopment Tools(ADT),ADT插件集成

Android应用开发基础习题

-- 任务一Android 开发环境的搭建 第一部分知识回顾与思考 1.Android 的四层架构分别包括哪几层?分别起到什么作用? 答:Linux 内核层(Linux Kernel ):基于Linux 内核,内核为上层系统提供了系统服务。 系统库层(Libraries ):系统库基于C/C++ 语言实现,通过接口向应用程序框架层提供编程接口。 应用框架层(Application Framework ):为开发者提供了一系列的Java API,包括图形用户界面组件

View 、SQLite 数据库相关的API 、Service 组件等。 应用程序层(Applications ):包含了Android 平台中各式各样的应用程序。 第二部分职业能力训练 一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内) 1.Android 四层架构中,应用框架层使用的是什么语法?(C)A .CB .C++C.Java D.Android 2.Android 四层架构中,系统库层使用的是什么语法?(B)A .VBB.C /C++C.Java D .Android 3.应用程序员编写的Android 应用程序,主要是调用(B)提供的接口进行实现。 A .应用程序层DCB.应用框架层.应用视图层.系统库层

二、填空题(请在括号内填空) 1.在Android 智能终端中,有很多应用如拍照软件、联系人管理软件,它们都属于Android 的(应用程 序)层。 2.为了让程序员更加方便的运行调试程序,Android 提供了(模拟器),可以方便的将程序运行其上, 而不要实际的移动终端。 程序运行,我们需要安装(Java 3.为了支持)。JDK 三、简答题 1.简述Android 开发环境安装的步骤。 答:下载并安装JDK ,配置JDK 的环境变量; 从Anroid 官网上下载Android 开发组件(包含Eclipse 和

ANDROID OPENGL ES 基础知识(基本概念)

基本概念 为了方便后边的编程,我们第一篇文章主要是介绍一些关于OpenGLES基本的概念。点 3D图像的最小单位称为点(point)或者顶点vertex。它们代表三维空间中的一个点并用来建造更复杂的物体。多边形就是由点构成,而物体是由多个多边形组成。尽管通常OpenGL支持多种多边形,但OpenGLEs只支持三边形(即三角形)所以即使我们要绘制一个正方形也要把它拆分为两个三角形绘制。先说说坐标系的问题。 默认情况下,以屏幕中心为坐标轴原点。原点左方x为负值,右边为正值。原点上方y 为正,原点下方为负。垂直屏幕向外为z正,垂直屏幕向里为z负。默认情况下,从原点到屏幕边缘为1.0f,沿各轴增加或减小的数值是以任意刻度进行的–它们不代表任何真实单位,如英尺,像素或米等。你可以选择任何对你的程序有意义的刻度(全局必须保持单位一致,不能一部分使用米,一部分使用像素)。OpenGL只是将它作为一个参照单位处理,保证它们具有相同的距离。如图:

了解了坐标轴,我们来看看怎么在坐标系中表示一个点,通常用一组浮点数来表示点。例如一个正方形的4个顶点可表示为: 1.float vertices[] ={ 2.-1.0f,1.0f,.0f,//左上 3.-1.0f, -1.0f,.0f,//左下 4.1.0f, -1.0f,.0f,//右下 5.1.0f,1.0f,.0f,//右上 6.}; 为了提高性能,通常还需要将浮点数组存入一个字节缓冲中。所以有了下面的操作: 1.ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length *4); //申请内存 2.vbb.order(ByteOrder.nativeOrder()); //设置字节顺序,其中ByteOrder.nativeOrder()是 获取本机字节顺序 3.FloatBuffer vertexBuffer = vbb.asFloatBuffer(); //转换为float型

Android移动应用开发基础教程(微课版)-教学大纲

《Android移动应用开发基础教程(微课版)》教学大纲 学时:62 代码: 适用专业: 制定: 审核: 批准: 一、课程的地位、性质和任务 Android移动应用开发基础是普通高等学校计算机科学与技术专业的一门重要的专业基础课。通过本课程的学习,使学生能够在已有的计算机基础知识基础上,对Android移动应用开发有一个系统的、全面的了解、为掌握移动应用开发打下良好的基础;在系统理解和掌握Android移动应用开发基本原理的基础上,了解和掌握移动应用开发的基本原理和方法,具有设计和开发Android移动应用APP的基本能力。 Android移动应用开发是一门实践性非常强的学科,它要求学生在理解和掌握Android移动应用开发语言语法的基础上,充分利用实验课程,在计算机上动手完成程序的编写和调试。 二、课程教学基本要求 1.课程教学以Android移动应用开发方法为主,在教学过程中让学生掌握Android移动应用开发的基本原理和方法。 2.要求在教学过程中合理安排理论课时和实验课时,让学生有充分的使用在计算机上练习理论课程中学到的Android移动应用开发技巧和方法。 三、课程的内容 第1章 Android开发起步 让学生了解Android平台特点、体系架构和版本,掌握如何搭建Android开发环境,熟悉如何创建Android项目和Android编程的日志工具 第2章 Android核心组件:活动 让学生了解Android核心组件之一的活动是什么、活动生命周期,掌握活动基本操作、在活动中使用Intent、在活动之间传递数据、活动的启动模式。 第3章 UI设计 让学生熟练掌握线性布局、相对布局、通用UI组件、消息通知和菜单。 第4章广播机制 让学生了解广播机制,并熟练掌握如何使用广播接收器。 第5章数据存储 让学生熟练掌握Android文件存储、共享存储和SQLite数据库存储。 第6章多媒体 让学生熟练掌握播放多媒体文件、记录声音、使用摄像头和相册。 第7章网络和数据解析

(完整版)06059心理学研究方法复习题

心理学研究方法复习题 一、重要概念 1、研究的效度:即有效性,它是指测量工具或手段能够准确测出所需测量的心理特质的程度。 2、内部一致性信度:主要反映的是测验内部题目之间的信度关系,考察测验的各个题目是否测量了 相同的内容或特质。内部一致性信度又分为分半信度和同质性信度。 3、外推效度:实验研究的结果能被概括到实验情景条件以外的程度。 4、半结构访谈:半结构化访谈指按照一个粗线条式的访谈提纲而进行的非正式的访谈。该方法对访谈 对象的条件、所要询问的问题等只有一个粗略的基本要求,访谈者可以根据访谈时的实际情况灵活地做出必要的调整,至于提问的方式和顺序、访谈对象回答的方式、访谈记录的方式和访谈的时间、地点等没有具体的要求,由访谈者根据根据情况灵活处理。 5、混淆变量:如果应该控制的变量没有控制好,那么,它就会造成因变量的变化,这时,研究者选定 的自变量与一些没有控制好的因素共同造成了因变量的变化,这种情况就称为自变量混 淆。 6、被试内设计:每个被试接受接受自变量的所有情况的处理。 7、客观性原则:是指研究者对待客观事实要采取实事求是的态度,既不能歪曲事实,也不能主观臆断。 8、统计回归效应:在第一次测试较差的学生可能在第二次测试时表现好些,而第一次表现好的学生则 可能相反,这种情形称为统计回归效应.。统计回归效应的真正原因就是偶然因素变化导致的随机误差,以及仅仅根据一次测试结果划分高分组和低分组。 9、主体引发变量:研究对象本身的特征在研究过程中所引起的变量。 11、研究的信度:测量结果的稳定性程度。换句话说,若能用同一测量工具反复测量某人的同一种心理特质,则其多次测量的结果间的一致性程度叫信度,有时也叫测量的可靠性。 12、分层随机抽样:它是先将总体各单位按一定标准分成各种类型(或层);然后根据各类型单位数与总体单位数的比例,确定从各类型中抽取样本单位的数量;最后,按照随机原则从各类型中抽取样本。13、研究的生态效度:生态效度就是实验的外部效度,指实验结果能够推论到样本的总体和其他同类现象中去的程度,即试验结果的普遍代表性和适用性。 14、结构访谈:又称为标准化访谈,指按照统一的设计要求,按照有一定结构的问卷而进行的比较正式的访谈,结构访谈对选择访谈对象的标准和方法、访谈中提出的问题、提问的方式和顺序、访谈者回答的方式等都有统一的要求。 15、被试间设计:要求每个被试者(组)只接受一个自变量处理,对另一被试者(组)进行另一种处理。

2016尚学堂Android开发入门教程

android开发者资料大全 第一篇:安装SDK 这里主要介绍如何安装Android的SDK开发包和配置开发环境。如果你还没有下载SDK,点击下面的链接开始。 Download the Android SDK 系统和软件配置要求 要通过Android SDK中提供的代码和工具进行Android应用程序的开发,需要一个合适的用于开发的电脑和合适的开发环境,具体要求如下: 支持的开发环境 Eclipse Eclipse 3.2,3.3(Europa) Android开发工具插件(可选) 其他的开发环境或者IDE JDK5.0或者JDK6.0(仅有JRE是不够的) 安装SDK 下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,我们默认你的SDK安装目录为$SDK_ROOT 你可以选择将$SDK_ROOT/tools加入到你的路径中 1.Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。如果没有找到设定PATH变量的行,你可以自己添加一行: export PATH=${PATH}:<你的$SDK_ROOT/tools的完全路径> 2.Mac下,在你的home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,你可以创建一个.bash_profile文件。 3.Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。

心理学研究方法复习资料

心理学研究方法复习资料 考试题型概念解释(5*4=20)、简答(3*8=24)、案例分析(4*10=40)、研究设计(1*16=16)。本资料包括老师提到的概念解释和简答,案例分析和研究设计来自于课本挑战性问题。本资料仅供参考。 名词解释: 1、研究假设(Hypothesis):是由理论所推衍出来的更为具体的预测,是针对研究问题提出的有待验证的、暂时性的、推测性的解答。 2、实验混淆(confounding):如果我们所设定的自变量其发生量的改变时,另一个已知或潜在的变量亦随之有量的改变,则这两个变量的作用就发生了相互混淆。 3、观察者间信度(interobserver reliability):指不同的独立的观察者针对同一观察所做记录的一致性程度。 4、便利抽样(convenience sampling):主要根据获得调查对象的容易程度和调查对象参加调查的意愿所进行的。便利抽样是所有取样技术中花费最小的,抽样单元是可以接近的、容易测量的,并且是可以合作的。便利取样是非随机抽样,所选取的样本缺乏代表性。 5、假相关(spurious relationship):如果两个变量间的关系可以通过第三个变量进行解释,那么这种关系就被称之为“假相关”。 6、操作定义(operational definition):指仅根据可观察的程度来解释概念,这个观察程度是来产生和测量概念的。即从具体的行为、特征、指标上对变量的操作进行描述,将抽象的概念转换成可观测、可检验的项目。 7、外部效度(external validity):是指研究结果能够一般化和普遍化到样本来自的总体和其他条件、时间、和背景中去的程度。 8、内部效度(internal validity):指实验中的自标量与因变量之间因果关系的明确程度。如果在试验中:当自变量发生变化时因变量随之发生改变,而自变量恒定时因变量则不发生变化,那么这个实验就具有较高的内部效度。内部效度与无关变量的控制有关。 9、交互作用(interaction effect):是指一个因子的效应依赖于另一个因子的不同水平,当一个自变量的效应在另一自变量的不同水平上存在差异时,就表示出现了交互作用。10、知情同意(informed consent):是被试在充分理解研究性质、不参加的后果、影响参加意愿的所有因素后,明确表达参加研究的意愿。 11、统计效力(power):指研究者在进行统计检验时,正确拒绝虚无假设的可能性,换言之,就是当存在真正效应时检验发现效应的概率。统计效力受到统计显著性水平、处理效应大小

《Android应用开发》课程标准

《Android应用开发》 课程标准 内蒙古电子信息职业技术学院计算机科学系

一.课程设置概述 1.1课程在相关专业中的性质与定位 Android应用开发是物联网应用技术专业(应用开发方向)的核心课程之一,是Android应用程序开发方法的主要课程,是Android应用的主要领域。为了适应高职学生的学习情况,该课程以Android应用技术为重点,逐步阐述Android 应用体系结构,介绍Android应用常见的几个功能。采用项目+案例教学法,既让学生掌握Android的基本知识,同时,也让学生在潜移默化中了解一些Android 的高级开发技术,从而为今后实现Android应用开发打下基础。 本课程的任务是使学生通过学习和操作实践,了解和掌握Android的主流应用技术及其开发方法,掌握Android的sdk、Activity、高级UI、网络、多媒体体方面的编程技术。为进一步学习移动互联工程师后续课程打下良好的理论和实践基础。 1.2 本课程的基本教学理念 (一)突出学生主体,注重技能培养,回归能力本位 Android应用开发是移动互联工程师的专业核心课程,注重软件开发基本理论、基本方法和基本技能的学习及素质教育,激发学生的学习兴趣,在启发、提示下使其自主地、全面地理解软件的基本理论和基本方法,提高学生的思维能力和实际操作技能,增强他们理论联系实际的能力,培养学生的创新精神,使学生养成观察、独立分析和解决问题的习惯;以提高技能、磨砺意识、活跃思维、展现个性和拓宽视野。 (二)尊重个体差异,注重过程评价,促进学生发展 本课程在教学过程中,倡导自主学习,启发学生对设定问题积极思考、分析,

安卓手机相关基础知识

一、验机: 到货后首先检查手机配件是否齐全由于水货手机多为散件入关所以机器串码和包装盒上的一般都是对不上的(在这里强调一下凡是宣传3码合一即机器开机之后调出的机身串码、机器后 面的串码和包装盒上的串码的其包装盒上的码基本上都是后期在深圳自己打印的)咋们的机器一般都是2码合一的。 然后安装手机电池开机检查手机外观是否有磨损(水货手机过关时多为水客即专门走私的人随身携带所以难免有磕碰)检查屏幕是否有进灰尘、屏幕是否有亮点。照相头是否能正常工作 最后检查一下手机内部的操作系统是否为原生的安卓系统(有些手机安装的是第三方的安卓系统里面有大量的恶意程序会偷用户流量、窃取私人信息等,类似于电脑安装的不是正版的操作 程序自然不会显示正版安装过程中或者安装后的信息),大致查看方式:开机之后是否显示HTC、三星、索爱标识凡是显示什么HTC安智网、开机之后第三方软件比如土豆网、地瓜网等等第三 方软件比较多的基本为非原升系统,这种机器肯定是过关之后刷过机的。 手机版本的大致确定:HTC手机在关机状态下同时按住开关机键、音量下键进入工程模式(不了解显示内容的不要随便选择里面选项退出可以直接拔掉电池)检查最上面一行SOFF 或者SON ,显示SOFF为已经解过锁的机器大致为欧版或者阿拉伯;显示SON为没有解锁机器这是原 版机器。原版机器在设置-语言和键盘选项里查看是台版、港版(显示简体中文、繁体中文、 英文)还 是亚太(亚太为新加坡、印度尼西亚、泰国这些区域凡是显示新加坡英语和泰语的就是亚太版)因为台湾、香港、新加坡、马来西亚、泰国等国家有大量华人所以机器里自带简体中文手机入 境无需解锁重新刷机就可使用。 二、相关知识: 出厂日期查询:1、为什么要查出厂日期?很多顾客都担心自己买到翻新的机器,要是知道机器的出厂日期就可以大致推断了,一般来说一部手机从出厂到销往国外到会大陆到咋们销售6个 月之内还是符合正常销售时间的,但是超出了而且随着超出时间的长短这种风险就越来越大。 2、怎么查?HTC 可以直接登录公司官网可以查到出厂日期和销往地(这样版本也就知道了)还有就是“I找吧”第三方网站但有时这个为什么不准确呢,因为这些网站是根据手机的IMEI 码和 SN码里的信息推测的。三星手机未刷机的可以在拨号键盘输入*#197328640#进入工程代码

心理学分析研究方法纯手打整理重点

变量:属性地逻辑组合,通常用定义来解释或限定.自变量—实验条件(操控); 调节变量:所要解释地是自变量在何种条件下会影响因变量,也就是说,当自变量与因变量间地相关大小或正负方向受到其它因素地影响时,这个其它因素就是该自变量与因变量之间地调节变量.中介变量:不可观察地,而在理论上又是影响所观察现象地因素 因变量—所需测定地特征或方面(可测量)额外变量—对因变量有一定影响,但与该次实验研究目地无关地变量(控制:屏蔽、中和))随机误差:可见误差.偶然地、随机地无关变量引起,较难控制,无规律可循;影响信效度.系统误差:常定误差.常定地、有规律地无关变量引起,其方向和大小地变化是恒定而有规律地.影响效度. 无关变量地控制:、消除法排除或隔离无关变量对实验效果地影响.标准化指导语、双盲程序、内隐测量、恒定法实验期间,尽量使得所有地实验条件、实验处理、实验者及被试都保持恒定.研究在同一时间、地点举行,程序、拉丁方设计、平衡法设置使得无关变量对所有地实验组和对照组地影响都均等、统计控制:一种事后补救,统计隔离无关变量地影响,协方差分析,偏相关.操作定义:描述所界定地变量或事项如何测量,包括:工具,方法,程序.将变量或指标地抽象称述转化为具体地操作称述地过程. 、简单随机取样(不作任何预处理,适用范围:对总体中各类比例不了解或来不及了解地情况)) 抽彩法(充分搅匀))随机表法(随

机进入))随机函数法(种子问题) 、分层随机取样:对总体进行预处理,分成若干层次后然后独立地从每一层次中选取样本. ()比例分层取样:按每一层次个体数量占总体中地比例决定该层次样本地数量. ()非比例分层取样:每层次中样本量不按该层次在总体中地比例抽取,而是根据研究者对不同层次个体地研究兴趣和侧重程度确定比例地大小. 、内部效度(逻辑度与额外因素影响度):研究中自变量与因变量因果关系地明确程度. 影响因素:成熟因素、历史因素、被试选择上地差异、 研究被试缺失产生地效应、前测地影响、实验程序不一致或处理扩散产生地效应、统计回归效应、研究条件与因素间地交互作用.、外部效度:可细分为总体效度和生态效度.研究结果能一般化或普遍化到样本来自地总体(总体效度)和其它变量条件、时间和背景(生态效度)中去地程度,即研究结果地普遍代表性和适用性.影响因素:.取样代表性;.变量地操作方式不准,致使研究地可重复性差;.研究对被试地反作用;.事前测量与实验处理地相互影响;.多种处理地干扰;.实验者效应.研究地人为性;.被试选择与实验处理地交互作用.提高方法:严格控制;做好取样工作,包括被试取样、实验情境、研究工具、

Android应用开发入门教程(经典版)

Android应用开发入门教程(经典版) Linux公社(https://www.doczj.com/doc/e55252668.html,)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC 就是关于Linux的数据中心。 https://www.doczj.com/doc/e55252668.html,提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。

目录 第一篇Android系统结构和SDK使用 (5) 第1章 Android的系统介绍 (5) 1.1 系统介绍 (5) 1.2 软件结构和使用的工具 (7) 第2章 Android SDK的开发环境 (10) 2.1 Android SDK的结构 (10) 2.2 Android SDK环境安装 (11) 2.2.1. 安装JDK基本Java环境。 (11) 2.2.2. 安装Eclipse (12) 2.2.3. 获得Android SDK (12) 2.2.4(1). 在Eclipse 3.4(Ganymede)中安装ADT (14) 2.2.4(2). 在Eclipse 3.5(Galileo)中安装ADT (17) 2.2.5. 在Eclipse中配置Android SDK (20) 2.3 Android中运行仿真器环境 (21) 2.3.1. 建立Android虚拟设备 (21) 2.3.2. 运行虚拟设备 (22) 2.3.3. 使用Android中的工具 (23) 2.3.4. 使用logcat (24) 2.3.5. 使用仿真器控制 (25) 2.3.6. 命令行工具adb、mksdcard等 (26) 2.3.7. 使用设备控制 (28) 2.4 Android中建立工程 (29) 2.4.1. 建立工程 (29) 2.4.2. 查看和编辑各个文件 (31) 2.4.3. 运行工程 (33) 第二篇 Android应用程序的概述和框架 (36) 第3章 Android应用层程序的开发方式 (36) 3.1 应用程序开发的结构 (36) 3.2 API参考文档的使用 (36) 第4章Android应用程序示例 (40) 4.1 HelloActivity程序的运行 (40) 4.2 HelloActivity的源文件结构 (41) 4.2.1.Android.mk文件 (41) 4.2.2.AndroidManifest.xml文件 (42) 4.2.3.源代码文件 (42) 4.2.4.布局文件 (43) 4.2.5.其他资源文件 (43) 4.3 HelloActivity的编译结构 (43) 4.4 SkeletonApp的程序的运行 (44) 4.5 SkeletonApp的源文件结构 (44) 4.6 SkeletonApp的编译结构 (46) 第5章 Android应用程序的内容 (47) 5.1 Android应用程序的概念性描述 (47) 5.1.1.应用程序的组成部分 (47) 5.1.2.应用程序的生命周期 (48) 5.2 应用程序包含的各个文件 (50) 5.3 使用am工具启动Android应用程序 (51) 2

相关主题
文本预览
相关文档 最新文档