当前位置:  编程技术>移动开发
本页文章导读:
    ▪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
<?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);
}

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
NOSQL iis7站长之家
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3