public voidbind(View v){ // Intent intent = new Intent(this,AlipayS) Intentintent = new Intent(); intent.setAction("cn.itcast.ALIPAY"); mConn = newMyServiceConnection(); //绑定服务 bindService(intent, mConn,BIND_AUTO_CREATE); }
// Connecetion内部类的逻辑private classMyServiceConnection implements ServiceConnection{ @Override public voidonServiceConnected(ComponentName name, IBinder service) { //之前是强转,现在就不用了. mNeixian = IAlipayNeixian.Stub.asInterface(service); } @Override public voidonServiceDisconnected(ComponentName name) { } } 6. 关于aidl技术:Aidl--- android inteface definition language ---安卓接口定义语言.主要用于规定进程间通信的规则. 在编写aidl文件的时候,注意写法与写接口很类似. 首先写接口,写完后把public这样的访问修饰符干掉. 其余照搬过来. 扩展名记得要改成.aidl ,这些写好了之后,刷新,会自动的生成 .java类在gen的目录下.例如:
如果aidl文件的方法中的接收的参数,还有返回值是8种基本数据类型或者String类型的数据,那么可以直接写.但是如果接收的参数或者返回值的类型是复杂的类型(对象类型的数据),这个时候对应的对象数据类型的类必须要去实现Parceable的接口或者Serializable的接口. 关于aidl文件更多的内容,请参考 官方文档.
7. 绑定服务的生命周期(了解): 8. 混合开启服务(了解): 开启服务服务可以一直在后台运行, 但是不能直接调用服务中的方法绑定服务服务不可以一直在后台运行,但是可以调用服务中的方法. 既可以长期的在后台运行,又可以调用服务中的方法,那么就会自然而然想到混合开启. 混合开启请严格按照如下的顺序去编程
====多媒体编程====多媒体:多种媒体的一个集合... 图形,声音,视频,传感器,照相机,动画.... 9. 图形处理相关:9.1. 显示普通的小图片://让图片显示到ImageView中 Bitmap bitmap =BitmapFactory.decodeFile("/mnt/sdcard/bb.jpg"); mIv_pic.setImageBitmap(bitmap);9.2. 显示大图片(重要):大图片,由于占用的内存空间比较大,很多时候需要进行缩放处理.缩放处理,需要找到合适的缩放比 1.需要知道图片的宽高信息,
//Extended information接口 ExifInterfaceinfo = new ExifInterface("/mnt/sdcard/big.jpg"); intp_w_picpathWidth = info.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0); intp_w_picpathHeight = info.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0); System.out.println("p_w_picpathWidth:" + p_w_picpathWidth+", p_w_picpathHeight : "+ p_w_picpathHeight); 2.需要知道手机屏幕的宽高信息.
int screenWidth =getWindowManager().getDefaultDisplay().getWidth(); intscreenHeight = getWindowManager().getDefaultDisplay().getHeight(); System.out.println("screenWidth:"+screenWidth +", screenHeight : "+screenHeight); // 3.基于图片的宽高和屏幕的宽高找到合适的缩放的比
int scale1= p_w_picpathWidth/screenWidth; // 5 intscale2 = p_w_picpathHeight/screenHeight; // 7 //拿到缩放比 intscale =0; if(scale1>=scale2){ scale=scale1; }else{ scale=scale2; } Options opts = new Options(); opts.inSampleSize = scale; // 4, 宽高都变为原来的1/4,那么就变成了1/16 Bitmapbitmap = BitmapFactory.decodeFile("/mnt/sdcard/big.jpg",opts); 10. 常规的图片的处理:图片可以缩放,旋转,平移, 倒影,镜面10.1. 核心的代码:
//显示处理后的图 //参考了现实生活中画画临摹的过程来实现的. //这个bitmap目前是一个空白的bitmap ,什么都没有, //只是有了宽高,以及配置信息. Bitmap createBitmap =Bitmap.createBitmap(orginalBitmap.getWidth(), orginalBitmap.getHeight(),orginalBitmap.getConfig()); //画布--- Canvas Canvas canvas = new Canvas(createBitmap); Matrix matrix = new Matrix(); //矩阵 Paint paint = new Paint(); //画笔 canvas.drawBitmap(orginalBitmap, matrix, paint); //显示处理后的图 mIv_processed.setImageBitmap(createBitmap); 10.2. 处理:l 缩放://宽高各变为原来的60%// matrix.setScale(0.6f,0.6f); l 平移:matrix.setTranslate(100,0); //向x轴正方向平移100像素l 旋转:matrix.setRotate(40); //旋转40度 //围绕着图片的中心旋转90度matrix.setRotate(90,createBitmap.getWidth()/2,createBitmap.getHeight()/2); l 镜面:在 x轴的值变为负值之后,再进行平移.matrix.setScale(-1, 1);matrix.postTranslate(createBitmap.getWidth(),0); l 倒影:matrix.setScale(1, -1);matrix.postTranslate(0,createBitmap.getHeight()); 具体的参考代码
作业:1.服务的5种优先级.2.服务开启后会一直在后台运行..3.美图调用支付宝4.图形显示大图片.获得图片的宽高. 屏幕的宽高.5.效果...