当前位置: 编程技术>移动开发
本页文章导读:
▪HTC EVO 3D因为接近传感器黑屏后无法录音 HTC EVO 3D由于接近传感器黑屏后无法录音
最近在开发一个Android下面的通话录音小应用,发现某些型号的手机接近传感器黑屏期间没有录到语音。经过反复追踪都没有发现异常。后来突然想到.........
▪ 图片简略放大 图片简单放大
先上效果图:[img][/img]布局文件:main.xm<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="f.........
▪ AudioManager音量控制调剂 AudioManager音量控制调节
//音量控制,初始化定义
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//最大音量
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//当前音.........
[1]HTC EVO 3D因为接近传感器黑屏后无法录音
来源: 互联网 发布时间: 2014-02-18
HTC EVO 3D由于接近传感器黑屏后无法录音
最近在开发一个Android下面的通话录音小应用,发现某些型号的手机接近传感器黑屏期间没有录到语音。经过反复追踪都没有发现异常。后来突然想到是否因为黑屏后CPU进入省电模式引起的呢?增加PowerManager.PARTIAL_WAKE_LOCK后问题解决。
if (wakeLock == null) { log("Acquiring wake lock"); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this .getClass().getCanonicalName()); wakeLock.acquire(); }
[2] 图片简略放大
来源: 互联网 发布时间: 2014-02-18
图片简单放大
先上效果图:
[img]
[/img]
布局文件:
main.xm
MainActivity:
先上效果图:
[img]
[/img]
布局文件:
main.xm
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layout1"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/rl"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="19" android:scrollbars="none" android:fadingEdge="vertical" android:layout_gravity="center" android:gravity="center"> <HorizontalScrollView android:layout_height="fill_parent" android:layout_width="fill_parent" android:scrollbars="none" android:layout_gravity="center" android:gravity="center" android:id="@+id/hs"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layoutImage" android:layout_gravity="center" android:gravity="center"> <ImageView android:layout_gravity="center" android:gravity="center" android:id="@+id/myImageView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="19" android:paddingTop="5dip" android:paddingBottom="5dip" /> </LinearLayout> </HorizontalScrollView> </ScrollView> <ZoomControls android:id="@+id/zoomcontrol" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" /> </RelativeLayout> </FrameLayout>
MainActivity:
package com.magus.img; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnKeyListener; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.os.Handler; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.ZoomControls; public class MainActivity extends Activity { /** Called when the activity is first created. */ private final int LOADING_IMAGE = 1; public static String KEY_IMAGEURI = "ImageUri"; private ZoomControls zoom; private ImageView mImageView; private LinearLayout layoutImage; private int displayWidth; private int displayHeight; /**图片资源*/ private Bitmap bmp; /**宽的缩放比例*/ private float scaleWidth = 1; /**高的缩放比例*/ private float scaleHeight = 1; /**用来计数放大+1 缩小-1*/ private int zoomNumber=0; /**点击屏幕显示缩放按钮,三秒消失*/ private int showTime=3000; RelativeLayout rl; Handler mHandler = new Handler(); private Runnable task = new Runnable() { public void run() { zoom.setVisibility(View.INVISIBLE); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //showDialog(LOADING_IMAGE); //图片是从网络上获取的话,需要加入滚动条 bmp=BitmapFactory.decodeResource(getResources(), R.drawable.image); //removeDialog(LOADING_IMAGE); initZoom(); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case LOADING_IMAGE: { final ProgressDialog dialog = new ProgressDialog(this); dialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); } return false; } }); dialog.setMessage("正在加载图片请稍后..."); dialog.setIndeterminate(true); dialog.setCancelable(true); return dialog; } } return null; } public void initZoom() { /* 取得屏幕分辨率大小 */ DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); displayWidth = dm.widthPixels; displayHeight = dm.heightPixels; mImageView = (ImageView) findViewById(R.id.myImageView); mImageView.setImageBitmap(bmp); layoutImage = (LinearLayout) findViewById(R.id.layoutImage); mImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /** * 在图片上和整个view上同时添加点击监听捕捉屏幕 * 点击事件,来显示放大缩小按钮 * */ zoom.setVisibility(View.VISIBLE); mHandler.removeCallbacks(task); mHandler.postDelayed(task, showTime); } }); layoutImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub zoom.setVisibility(View.VISIBLE); mHandler.removeCallbacks(task); mHandler.postDelayed(task, showTime); } }); zoom = (ZoomControls) findViewById(R.id.zoomcontrol); zoom.setIsZoomInEnabled(true); zoom.setIsZoomOutEnabled(true); // 图片放大 zoom.setOnZoomInClickListener(new OnClickListener() { public void onClick(View v) { big(); } }); // 图片减小 zoom.setOnZoomOutClickListener(new OnClickListener() { public void onClick(View v) { small(); } }); zoom.setVisibility(View.VISIBLE); mHandler.postDelayed(task, showTime); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub /** * 在图片上和整个view上同时添加点击监听捕捉屏幕 * 点击事件,来显示放大缩小按钮 * */ zoom.setVisibility(View.VISIBLE); mHandler.removeCallbacks(task); mHandler.postDelayed(task, showTime); return false; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub super.onKeyDown(keyCode, event); return true; } /* 图片缩小的method */ private void small() { --zoomNumber; int bmpWidth = bmp.getWidth(); int bmpHeight = bmp.getHeight(); Log.i("","bmpWidth = " + bmpWidth + ", bmpHeight = " + bmpHeight); /* 设置图片缩小的比例 */ double scale = 0.8; /* 计算出这次要缩小的比例 */ scaleWidth = (float) (scaleWidth * scale); scaleHeight = (float) (scaleHeight * scale); /* 产生reSize后的Bitmap对象 */ Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true); mImageView.setImageBitmap(resizeBmp); /* 限制缩小尺寸 */ if ((scaleWidth * scale * bmpWidth < bmpWidth / 4 || scaleHeight * scale * bmpHeight > bmpWidth /4 || scaleWidth * scale * bmpWidth > displayWidth / 5 || scaleHeight * scale * bmpHeight > displayHeight / 5)&&(zoomNumber==-1) ){ zoom.setIsZoomOutEnabled(false); } else { zoom.setIsZoomOutEnabled(true); } zoom.setIsZoomInEnabled(true); System.gc(); } /* 图片放大的method */ private void big() { ++zoomNumber; int bmpWidth = bmp.getWidth(); int bmpHeight = bmp.getHeight(); /* 设置图片放大的比例 */ double scale = 1.25; /* 计算这次要放大的比例 */ scaleWidth = (float) (scaleWidth * scale); scaleHeight = (float) (scaleHeight * scale); /* 产生reSize后的Bitmap对象 */ Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true); mImageView.setImageBitmap(resizeBmp); /* 限制放大尺寸 */ if (scaleWidth * scale * bmpWidth > bmpWidth * 4 || scaleHeight * scale * bmpHeight > bmpWidth * 4 || scaleWidth * scale * bmpWidth > displayWidth * 5 || scaleHeight * scale * bmpHeight > displayHeight * 5) { zoom.setIsZoomInEnabled(false); } else { zoom.setIsZoomInEnabled(true); } zoom.setIsZoomOutEnabled(true); System.gc(); } }
[3] AudioManager音量控制调剂
来源: 互联网 发布时间: 2014-02-18
AudioManager音量控制调节
直接控制音量的多少:
以一步步长控制音量的增减,并弹出系统默认音量控制条:
//音量控制,初始化定义 AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); //最大音量 int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //当前音量 int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
直接控制音量的多少:
if(isSilent){ mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); }else{ mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, tempVolume, 0); //tempVolume:音量绝对值 }
以一步步长控制音量的增减,并弹出系统默认音量控制条:
//降低音量,调出系统音量控制 if(flag == 0){ mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER, AudioManager.FX_FOCUS_NAVIGATION_UP); } //增加音量,调出系统音量控制 else if(flag == 1){ mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE, AudioManager.FX_FOCUS_NAVIGATION_UP); }
最新技术文章: