Android基础-10

Android基础-10 多媒体编程

图片、音乐、视频等; 多媒体:多种综合;

01_计算机表示图形的形式

.jpg 36.4 KB 255*340像素,位深度24.
  jpg这种工业图形的压缩算法,类似rar,把人言无法识别的颜色值压缩掉了,会使用相邻空间内的颜色表示同一种颜色。文件体积变小,失真。
.png 203 KB 255*340像素,位深度32.
  png这种工业图形的压缩算法,使用类似map的数据结构来存储图形的数据。图片体积变小,不会失真。
.bmp 255 KB 255*340像素,位深度24.
    计算机在表示图形的时候使用像素点来表示,每个像素点都是使用一个颜色来表示,每个颜色都是6个十六进制的数值来表示的,每个颜色都是使用24bit来表示;
    255*340*24+文件头信息占用的大小;

02_加载大图片的OOM异常

java.lang.OutOfMemoryError:内存溢出、内存泄露。
ARGB 23.6m
堆内存空间主要是给类实例、数组分配空间。当图片占用的空间大于对内存空间时就会抛出内存溢出的异常。

03_缩放图片并加载到内存中

缩放加载图片:

1、得到设备屏幕的分辨率:
2、得到原图的分辨率:
3、通过比较得到一个合适的比例值:
4、使用比例值缩放一张图片,并加载到内存中:

代码:

//      1、得到设备屏幕的分辨率:
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    //Display显示器
        Display display = wm.getDefaultDisplay();
        long screenHeigth = display.getHeight();
        long screenWidth = display.getWidth();

//      2、得到原图的分辨率:Options选项
        Options opts = new Options();
        //如果置为true,表示只绑定图片的大小
        opts.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.jpg", opts);
        long scrHeight = opts.outHeight;
        long scrWidth = opts.outWidth;

//      3、通过比较得到一个合适的比例值:
        int scale = 1;

        //3000/320  = 9 3000/480=6
        int sx = (int) (scrWidth/screenWidth);
        int sy = (int) (scrHeight/screenHeigth);
        if(sx>=sy&& sx>=1){
            scale = sx;
        }
        if(sy>sx&& sy>=1){
            scale = sy;
        }
//      4、使用比例值缩放一张图片,并加载到内存中:
        opts.inJustDecodeBounds = false;
        //按照比例缩放原图
        opts.inSampleSize = scale;
        Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.jpg", opts);

04_在内存中创建原图的副本(重点)

在Android应用程序里面不允许直接修改原图,只能修改副本。

在处理图形之前需要在内存里面先创建一个原图的副本。

临摹画画步骤:

1、得到原图
2、参考原图创建一张空白的纸张
3、参考空白纸张创建一个画板
4、创建一支画笔
5、使用画笔在画板上画画

代码:

//      1、得到原图
        //加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(), R.drawable.meinv);
//      2、参考原图创建一张空白的纸张
       Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth(), srcPic.getHeight(), srcPic.getConfig());
//      3、参考空白纸张创建一个画板 canvas 帆布;油画
       Canvas canvas = new Canvas(copyPic);
//      4、创建一支画笔
       Paint paint = new Paint();
       //给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
       paint.setColor(Color.BLACK);
//      5、使用画笔在画板上画画
       //参看原图画画
       //srcPic 原图
       //matrix 表示图形的矩阵对象
       //paint 画画时使用的画笔
       canvas.drawBitmap(srcPic, new Matrix(), paint);

05_计算机图形处理的原理

计算机在表示图形的时候使用像素点来表示,每个像素点都是使用一个颜色来表示,每个颜色都是6个十六进制的数值来表示的,计算机在底层表示图形时就是使用01001字符串来表示的,处理图形时就是修改0101的序列。

06_计算机图形处理的API(重点)

平移、缩放、旋转,倒影、镜面

代码:

package com.itheima.copypic;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.iv);

    }

    public void trans(View view) {

        // 1、得到原图
        // 加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.meinv);
        // 2、参考原图创建一张空白的纸张
        Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth() + 200,
                srcPic.getHeight() + 200, srcPic.getConfig());
        // 3、参考空白纸张创建一个画板
        Canvas canvas = new Canvas(copyPic);
        // 4、创建一支画笔
        Paint paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 平移图片
        matrix.setTranslate(200, 200);
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);
    }

    public void scale(View view) {

        // 1、得到原图
        // 加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.meinv);
        // 2、参考原图创建一张空白的纸张
        Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth(),
                srcPic.getHeight(), srcPic.getConfig());
        // 3、参考空白纸张创建一个画板
        Canvas canvas = new Canvas(copyPic);
        // 4、创建一支画笔
        Paint paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 缩放图片
        // matrix.setScale(0.5f, 0.5f);
        matrix.setScale(0.5f, 0.5f, srcPic.getWidth() / 2,
                srcPic.getHeight() / 2);
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);
    }

    public void rotate(View view) {

        // 1、得到原图
        // 加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.meinv);
        // 2、参考原图创建一张空白的纸张
        Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth(),
                srcPic.getHeight(), srcPic.getConfig());
        // 3、参考空白纸张创建一个画板
        Canvas canvas = new Canvas(copyPic);
        // 4、创建一支画笔
        Paint paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 旋转图片
        matrix.setRotate(90);

        //可以让平移后的效果立即显现出来
        matrix.postTranslate(srcPic.getHeight(), 0);
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);
    }

    public void jm(View view) {

        // 1、得到原图
        // 加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.meinv);
        // 2、参考原图创建一张空白的纸张
        Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth(),
                srcPic.getHeight(), srcPic.getConfig());
        // 3、参考空白纸张创建一个画板
        Canvas canvas = new Canvas(copyPic);
        // 4、创建一支画笔
        Paint paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 缩放图片
        // 把x方向的数据编程负值
        matrix.setScale(-1.0f,1.0f);

        matrix.postTranslate(srcPic.getWidth(), 0);
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);
    }

    public void dy(View view) {

        // 1、得到原图
        // 加载资源目录中的一个图片
        Bitmap srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.meinv);
        // 2、参考原图创建一张空白的纸张
        Bitmap copyPic = Bitmap.createBitmap(srcPic.getWidth(),
                srcPic.getHeight(), srcPic.getConfig());
        // 3、参考空白纸张创建一个画板
        Canvas canvas = new Canvas(copyPic);
        // 4、创建一支画笔
        Paint paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 缩放图片
        // 把x方向的数据编程负值
        matrix.setScale(1.0f,-1.0f);

        matrix.postTranslate(0, srcPic.getHeight());
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);
    }
}

07_撕衣服

实现的原理:

使用两个imageview显示两张图片了,这两个imageview是重叠显示的,显示在上面的imageview显示的是穿衣服的图片,显示在下面的imageview显示的没穿衣服的图片。
当手在上面的图片上移动的过程中,在移动的过程中会把手所到之处的像素点改成透明色。

代码:

package com.itheima.syf;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView iv;
    private Bitmap srcPic;
    private Bitmap copyPic;
    private Canvas canvas;
    private Paint paint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.iv);

        srcPic = BitmapFactory.decodeResource(getResources(),
                R.drawable.pre7);
        copyPic = Bitmap.createBitmap(srcPic.getWidth(),
                srcPic.getHeight(), srcPic.getConfig());
        canvas = new Canvas(copyPic);
        paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);

        iv.setOnTouchListener(new OnTouchListener() {

            /**
             * 当触摸到这控件时会调用这个方法
             */
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN: // 按下的事件类型

                    break;
                case MotionEvent.ACTION_MOVE: // 移动的事件类型

                    int newX = (int) event.getX();
                    int newY = (int) event.getY();
                    System.out.println("x="+newX+"; y="+newY);

                    for(int i=-10;i<10; i++){
                        for(int j=-10;j<10;j++){
                            if(Math.sqrt(i*i+j*j) <= 10){
                                //把当前像素点改成透明色  像素 Pixe  transparent  透明的;清澈的;易识破的;显而易见的
                                copyPic.setPixel(newX + i, newY + j, Color.TRANSPARENT);
                                iv.setImageBitmap(copyPic);
                            }
                        }

                    }

                    break;

                case MotionEvent.ACTION_UP: // 离开的事件类型

                    break;

                default:
                    break;
                }

                //如果返回true表示当前时间已经消费掉了
                return true;
            }
        });

    }

}

08_画画板

代码:

package com.itheima.painter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView iv;

    private Bitmap srcPic;
    private Bitmap copyPic;
    private Canvas canvas;
    private Paint paint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.iv);

        srcPic = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
        copyPic = Bitmap.createBitmap(srcPic.getWidth(), srcPic.getHeight(),
                srcPic.getConfig());
        canvas = new Canvas(copyPic);
        paint = new Paint();
        // 给画笔设置默认的颜色,在画画的过程中会使用原图的颜色来画画
        paint.setColor(Color.BLACK);

        // 处理图形
        Matrix matrix = new Matrix();
        // 5、使用画笔在画板上画画
        // 参看原图画画
        // srcPic 原图
        // matrix 表示图形的矩阵对象,封装了处理图形的api
        // paint 画画时使用的画笔
        canvas.drawBitmap(srcPic, matrix, paint);

        iv.setImageBitmap(copyPic);

        // canvas.drawLine(0, 0, 200, 200, paint);

        iv.setOnTouchListener(new OnTouchListener() {

            private int startX;
            private int startY;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN:// 按下的事件类型

                    startX = (int) event.getX();
                    startY = (int) event.getY();
                    break;

                case MotionEvent.ACTION_MOVE:// 移动的事件类型

                    // 得到结束位置的坐标点
                    int endX = (int) event.getX();
                    int endY = (int) event.getY();
                    // 从开始坐标点画到结束坐标点
                    canvas.drawLine(startX, startY, endX, endY, paint);

                    iv.setImageBitmap(copyPic);
                    //得到新的开始坐标点
                    startX = (int) event.getX();
                    startY = (int) event.getY();
                    break;

                case MotionEvent.ACTION_UP:// 移动的事件类型

                    break;

                }

                return true;
            }
        });

    }

    public void save(View view){

        try {
            FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/paiter.jpg"));
            boolean flag = copyPic.compress(CompressFormat.JPEG, 100, fos);
            if(flag){
                System.out.println("保存成功.................");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void red(View view){
        paint.setColor(Color.RED);
    }
    public void green(View view){
        paint.setColor(Color.GREEN);
    }

    public void blue(View view){
        paint.setColor(Color.BLUE);
    }

    public void brush(View view){
        //改变刷子的宽度
        paint.setStrokeWidth(10);
    }

}

09_视频播放器videoview(重点)

代码:

//得到视频播放器

Video   磁带录像;录像磁带
vv = (VideoView) findViewById(R.id.vv);
//指定播放的视频资源
vv.setVideoPath("http://192.168.1.254:8080/11.mp4");
//开始播放
vv.start();

10_音乐播放器API

代码:

    //media 媒体
    player = new MediaPlayer();
    //设置     audio 声音信号
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    //设置资源路径
    player.setDataSource("http://192.168.1.254:8080/xpg.mp3");

    //使用同步的方式准备一个多媒体播放器,适合播放本地的资源文件
    //player.prepare();
    //使用异步的方式准备一个多媒体播放器,适合播放网络上的资源文件
    player.prepareAsync();

    player.setOnPreparedListener(new OnPreparedListener() {

        /*
         *多媒体对象准备完成时调用这个方法
         */
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.start();
        }
    });

11_影音播放器的常用API

代码:

package com.itheima.mediaplayer;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

    private MediaPlayer player;
    private int currentPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void play(View view){
        try {
            player = new MediaPlayer();

            player.setAudioStreamType(AudioManager.STREAM_MUSIC);

            player.setDataSource("http://192.168.1.254:8080/xpg.mp3");

            //使用同步的方式准备一个多媒体播放器,适合播放本地的资源文件
//          player.prepare();
            //使用异步的方式准备一个多媒体播放器,适合播放网络上的资源文件
            player.prepareAsync();

            player.setOnPreparedListener(new OnPreparedListener() {

                /*
                 *多媒体对象准备完成时调用这个方法
                 */
                @Override
                public void onPrepared(MediaPlayer mp) {
                    player.start();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void pause(View view){
        if(player != null && player.isPlaying()){
            //暂停
            player.pause();
            currentPosition = player.getCurrentPosition();
        }
    }

    public void resume(View view){
        if(player != null){
            //从指定的位置开始播放
            player.seekTo(currentPosition);
            player.start();
        }
    }

    public void restart(View view){
        if(player != null){
            //从指定的位置开始播放
            player.seekTo(0);
            player.start();
        }else{
            play(view);
        }
    }

    public void stop(View view){
        if(player != null){
            //从指定的位置开始播放
            player.stop();
            player.release();
            player = null;
        }
    }
}

12_影音播放器的生命周期函数

状态:

1、空闲:调用reset方法、new MediaPlayer();
2、初始化:调用setDataSource();
3、准备:prepare()、prepareAsync();
4、开始:start();
5、完成:播放完成;

生命周期的方法:

start():开始播放;
pause:暂停;
resume:继续播放;
seekTo():从指定的位置开始播放;
stop:停止;
reset:重置;
release():释放多媒体对象;

13_照相机拍照(重点)

代码:

package com.itheima.camera;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void takePhoto(View view){

        //创建拍照的意图对象 image . 影像;肖像;概念,意向;镜像,映像
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        //指定照片的存储位置
        Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/123456.jpg"));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        //开启手机自带的拍照功能
        startActivityForResult(intent, 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Toast.makeText(this, "拍照成功", 0).show();
    }

}

14_录像机应用

代码:

public void takeVideo(View view){

    //创建拍照的意图对象
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    //指定照片的存储位置
    Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/123456.3gp"));
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    //开启手机自带的拍照功能
    startActivityForResult(intent, 0);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Toast.makeText(this, "录像完成", 0).show();
}
时间: 2024-08-01 22:25:10

Android基础-10的相关文章

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——10.10 传感器专题(1)——相关介绍

Android基础入门教程--10.10 传感器专题(1)--相关介绍 标签(空格分隔): Android基础入门教程 1.传感器相关介绍: 说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器: 传感器的定义:一种物理设备或者生物器官,能够探测.感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官! 传感器的种类:可以从不同的角度对传感器进行划分,转换原理(传感器工作的基本物理或化学 效应):用途:输出信号以及制作材料和工艺

Android基础入门教程——10.4 Vibrator(振动器)

Android基础入门教程--10.4 Vibrator(振动器) 标签(空格分隔): Android基础入门教程 本节引言: 本节我们介绍的是Vibrator(振动器),是手机自带的振动器,别去百度直接搜针振动器,因为 你的搜索结果可能是如图所示的神秘的道具,或者其他神秘道具: 嗯,说回本节介绍的Vibrator,其实就是Android给我们提供的用于机身震动的一个服务! 比如前面我们的Notification中可以设置震动,当收到推送消息的时候我们可以设置震动 提醒,游戏必备,比如"打飞机&

Android基础入门教程——8.3.10 Paint API之—— ColorFilter(颜色过滤器)(2-3)

Android基础入门教程--8.3.10 Paint API之-- ColorFilter(颜色过滤器)(2-3) 标签(空格分隔): 未分类 本节引言: 上一节中我们讲解了Android中Paint API中的ColorFilter(颜色过滤器)的第一个子类: ColorMatrixColorFilter(颜色矩阵颜色过滤器),相信又开阔了大家的Android图像处理视野, 而本节我们来研究它的第二个子类:LightingColorFilter(光照色彩颜色过滤器),先上一发 官方API文档

Android基础新手教程——1.10 反编译APK获代替码&amp;amp;资源

Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样子,事实上不然,就是通过某些反编译软件.对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件.不知道你有没有这样做过,看到一个别人的一个APP界面做得非常精美,或者你看上别人的图片素材,简单点的,我们能够下载别人的APK.然后改下后缀名,改成xxx.zip.然后解压: 笔者随便解压了一个AP

Android基础入门教程——10.14 Android GPS初涉

Android基础入门教程--10.14 Android GPS初涉 标签(空格分隔): Android基础入门教程 本节引言: 说到GPS这个名词,相信大家都不陌生,GPS全球定位技术嘛,嗯,Android中定位的方式 一般有这四种:GPS定位,WIFI定准,基站定位,AGPS定位(基站+GPS): 本系列教程只讲解GPS定位的基本使用!GPS是通过与卫星交互来获取设备当前的经纬度,准确 度较高,但也有一些缺点,最大的缺点就是:室内几乎无法使用-需要收到4颗卫星或以上 信号才能保证GPS的准确

Android基础入门教程——10.11 传感器专题(2)——方向传感器

Android基础入门教程--10.11 传感器专题(2)--方向传感器 标签(空格分隔): Android基础入门教程 本节引言: 在上一节中我们中我们对传感器的一些基本概念进行了学习,以及学习了使用传感器的套路, 本节给大家带来的传感器是方向传感器的用法,好的,开始本节内容~ 1.三维坐标系的概念: 在Android平台中,传感器框架通常是使用一个标准的三维坐标系来表示一个值的.以本节 要讲的方向传感器为例子,确定一个方向也需要一个三维坐标,毕竟我们的设备不可能永远 都是水平端着的吧,安卓给

Android基础入门教程——10.9 WallpaperManager(壁纸管理器)

Android基础入门教程--10.9 WallpaperManager(壁纸管理器) 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来的是WallpaperManager(壁纸管理器),如其名,就是手机壁纸相关的 一个API,在本节中我们会描述下WallpaperManager的基本用法,调用系统自带的 壁纸选择功能,将Activity的背景设置为壁纸背景,以及写一个定时换壁纸的例子~ 好了,不BB,开始本节内容~ 官方API文档:WallpaperManager 1

Android基础入门教程——10.2 SmsManager(短信管理器)

Android基础入门教程--10.2 SmsManager(短信管理器) 标签(空格分隔): Android基础入门教程 本节引言: 本节带来的是Android中的SmsManager(短息管理器),见名知意,就是用来管理手机短信的, 而该类的应用场景并不多,一般是我们发短信的时候才会用到这个API,当然这种短信是 文字短信,对于彩信过于复杂,而且在QQ微信各种社交APP横行的年代,你会去发1块钱一条的 彩信吗?所以本节我们只讨论发送普通文字短信! 官方文档:SmsManager 1.调用系统