編輯:關於Android編程
<FrameLayout anroid:layout_weight=”1”>
<ImageView android:scaleType=”fitCenter”/>
//沒有標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
//全屏顯示(隱藏掉狀態欄)
//在setContentView之前調用getWindow().addFlages(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Androied-編程UI/布局切換
LinearLayout linearLayout = new LinearLayout(this);
layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT){
textView = new TextView(this);
textView.setText(R.string.hello);
textView.setId(34);
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
linearLayout.addView(textView, textParams);
setContentView(linearLayout,layoutParams);
}
Android-多媒體(錄音)
<uses-permission android:name=”android.permission.RECORD_AUDIO”/>
MediaRecorder recorder = new MediaRecorder();
//從麥克風采集聲音
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//內容輸出格式
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音頻編碼方式
recorder.setOutputFile(“/mnt/sdcard/itcast.amr”);
recorder.prepare();//預期准備
recorder.start();//開始刻錄
…
recorder.stop();停止刻錄
recorder.reset();//重設
recorder.release();//刻錄完成一定要釋放資源。
Android-多媒體(音頻播放器)
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(“/mnt/sdcard/god.mp3”);
mediaPlayer.prepare();
mediaPlayer.start();//開始或恢復播放
mediaPlayer.pause();//暫停播放
mediaPlayer.stop();//停止播放
mediaPlayer.release();//釋放資源
//播放出錯事件
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener(){
public Boolean onError(MediaPlayer player,int arg1,int arg2){
mediaPlayer.release();
return false;
}
});
多媒體(影音播放器)
在main.xml布局文件添加視頻畫面繪制的SurfaceView控件
<SurfaceView…>
surfaceView.getHolder().setFixedSize(176.144);//設置分辨率
//下面設置Surface不維護自己的緩沖區,而是等待屏幕的渲染引擎內容推送到用戶面前
SurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//當有新的Activity打開,SurfaceView會被銷毀。當新的Activity關閉後,當前Activity回到前台,SurfaceView會在onResume()之後被重新創建。因此通過回調完成。
svVedio.getHolder().addCallback(new CallbackImpl())
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.reset();//重置為初始狀態
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.setDataSource(“/mnt/sdcard/oppo.mp4”);
mediaPlayer.prepare|start();|pause|stop|release();
注:影音播放放在模擬器2.2上有問題,需要移植到2.0平台下。
Android—多媒體(照相機)
surfaceView.getHolder().setFixedSize(176, 144);//設置分辨率
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().addCallback();//回調
WindowManager wm = getSystemService(Context.WINDOW_SERVICE);//窗口管理器
Display display = wm.getDefaultDisplay();//
Camera camera = Camera.open();//打開照相機
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(display.getWidth(),display.getHeight());//大小
parameters.setPreviewFrameRate(3);//每秒3幀
parameters.setPictureFormat(PixelFormat.JPEG);//設置照片的輸出格式
parameters.set("jpeg-quality", 85);//照片質量
parameters.setPictureSize(display.getWidth(),display.getHeight());
camera.setParameters(parameters);
照片需要在surfaceView.holder回調中完成相機設置並開始預覽,因為需要等holder就緒後才可用,道理同播放器相同。
不能再takePicture之後調用startPreview,因為是異步處理。需要在picCall回調中開始預覽。
照相機
//通過SurfaceView顯示取景畫面
camera.setPrevieDisplay(surfaceView.getHolder)
camera.startPrevice();//開始預覽
camera.autoFocus(null);//自動對焦
camera.takePicture(null,null,null,jpegCallback);//拍照片
camera.stopPrevice();//停止預覽
camera.release();//釋放攝像頭。
onKeyDown:
public Boolean onKeyDown(int keyCode,keyEvent event){
if(camera != null && event.getRepeatCount()==0){
case KeyEvent.KEYCODE_SEARCH:
}
PictureCallback:
Bitmap bmp = BitmapFactory.decodeByteArray(data,0,data.length);
File jpg = new File(Environment.getExternalStorageDirectory(),”1.jpg”);
FileOutputStream fos = new FileOutputStream(jpg);
Bmp.compress(Bitmap.CompressFormat.JPEG,100,fos);
fos.close();
camera.startPreview();
}
使用意圖模擬拍照
若沒有攝像頭硬件,可使用系統內置的provider實現攝像頭功能(該功能2.2的模擬器不支持)
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
//指定輸出文件
//outputFileUri指定照片存放的地址,若有的話存放全尺寸大照片,否則返回位圖。
//在onActivityResult方法中接收
Intent.putExtra(mediaStore.EXTRA_OUTPUT,outputFileUri);
startActivityForResult(intent,0);
BitmapFactory.Options options = new BitmapFactory.Options();
Options.inSampleSize = 1;
Bitmap bitmap = BitmapFactory.decodeFile(_path,options);
_image.setImageBitmap(bitmap);
<!—需要使用如下權限--->www.2cto.com
<uses-permission android:name=”android.permission.CAMERA”/>
<uses-feature android:name=”android.hardware.camera”/>
<uses-feature android:name=”android.hardware.camera.autofocus”/>
我們來定制一下吧布局文件:activity_main.xml <framelayout android:layout_height=0dp android:l
上一節中我們繪制了一個三角形,我們在上一節的基礎上來完成矩形的繪制 。OK,開始動手做吧,首先在上一節的項目中的shape目錄下新建一個類——Sq
一、前言今天我們繼續來看破解apk的相關知識,在前一篇:Eclipse動態調試smali源碼破解apk我們今天主要來看如何使用IDA來調試Android中的native源
在開發應用程序的時候,經常會遇到這樣的情況,會在運行時動態根據條件來決定顯示哪個View或某個布局。那麼最通常的想法就是把可能用到的View都寫在上面,先把它們的可見性都