当前位置:  编程技术>移动开发
本页文章导读:
    ▪上载图片过多溢出内存有关问题        下载图片过多溢出内存问题 过去一段时间一直有人和我说下载图片太多有时候会溢出内存 问我有啥办法,我说我也不知道除了把照片像素 参数缩小该一下,今天看源码的时候看见了SoftReferen.........
    ▪ 照相保存以及移动窗口        拍照保存以及移动窗口 public class CameraPreview extends Activity { private Preview mPreview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Hide the window title. requestWin.........
    ▪ 发送邮件的另一步骤       发送邮件的另一方法 Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_TEXT, message); Intent mailer = Intent.createChooser(intent, nul.........

[1]上载图片过多溢出内存有关问题
    来源: 互联网  发布时间: 2014-02-18
下载图片过多溢出内存问题

过去一段时间一直有人和我说下载图片太多有时候会溢出内存 问我有啥办法,我说我也不知道除了把照片像素 参数缩小该一下,今天看源码的时候看见了SoftReference这个东西,我不知道干啥用的搜索了一下就是为了内存问题而应用的,而且好多地方用到了,我把他取出来弄了一下下载照片处理的方法,不过是handler处理的,如果用asn处理会更好一些吧

public DrawableManager() { 
    drawableMap = new HashMap<String, SoftReference<Drawable>>(); 

 
public Drawable fetchDrawable(String urlString) { 
    SoftReference<Drawable> drawableRef = drawableMap.get(urlString); 
    if (drawableRef != null) { 
        Drawable drawable = drawableRef.get(); 
        if (drawable != null) 
            return drawable; 
        
        drawableMap.remove(urlString); 
    } 
 
    if (Constants.LOGGING) Log.d(this.getClass().getSimpleName(), "image url:" + urlString); 
    try { 
        InputStream is = fetch(urlString); 
        Drawable drawable = Drawable.createFromStream(is, "src"); 
        drawableRef = new SoftReference<Drawable>(drawable); 
        drawableMap.put(urlString, drawableRef); 
        if (Constants.LOGGING) Log.d(this.getClass().getSimpleName(), "got a thumbnail drawable: " + drawable.getBounds() + ", " 
                + drawable.getIntrinsicHeight() + "," + drawable.getIntrinsicWidth() + ", " 
                + drawable.getMinimumHeight() + "," + drawable.getMinimumWidth()); 
        return drawableRef.get(); 
    } catch (MalformedURLException e) { 
        if (Constants.LOGGING) Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e); 
        return null; 
    } catch (IOException e) { 
        if (Constants.LOGGING) Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e); 
        return null; 
    } 

 
public void fetchDrawableOnThread(final String urlString, final ImageView imageView) { 
    SoftReference<Drawable> drawableRef = drawableMap.get(urlString); 
    if (drawableRef != null) { 
        Drawable drawable = drawableRef.get(); 
        if (drawable != null) { 
            imageView.setImageDrawable(drawableRef.get()); 
            return; 
        } 
        // Reference has expired so remove the key from drawableMap 
        drawableMap.remove(urlString); 
    } 
 
    final Handler handler = new Handler() { 
        @Override 
        public void handleMessage(Message message) { 
            imageView.setImageDrawable((Drawable) message.obj); 
        } 
    }; 
 
    Thread thread = new Thread() { 
        @Override 
        public void run() { 
            //TODO : set imageView to a "pending" image 
            Drawable drawable = fetchDrawable(urlString); 
            Message message = handler.obtainMessage(1, drawable); 
            handler.sendMessage(message); 
        } 
    }; 
    thread.start(); 


    
[2] 照相保存以及移动窗口
    来源: 互联网  发布时间: 2014-02-18
拍照保存以及移动窗口
public class CameraPreview extends Activity  {
	private Preview mPreview;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// Hide the window title.
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		// Create our Preview view and set it as the content of our activity.
		mPreview = new Preview(this,this);		
		setContentView(mPreview);
		mPreview.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(!mPreview.onProgress)
				mPreview.onClick();
			}
		});
	}

}

// ----------------------------------

class Preview extends SurfaceView implements SurfaceHolder.Callback {

	SurfaceHolder mHolder;
	Camera mCamera;
	Context CON; 
	Activity ACT;
	public boolean onProgress=false;
	Preview(Context context,Activity activity) {
		super(context);
		CON=context;
		ACT=activity;
		// Install a SurfaceHolder.Callback so we get notified when the
		// underlying surface is created and destroyed.
		mHolder = getHolder();
		mHolder.addCallback(this);
		mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	}

	public void surfaceCreated(SurfaceHolder holder) {
		// The Surface has been created, acquire the camera and tell it where
		// to draw.
		mCamera = Camera.open();
		try {
			mCamera.setPreviewDisplay(holder);
		} catch (IOException exception) {
			mCamera.release();
			mCamera = null;
			// TODO: add more exception handling logic here
		}
	}

	public void surfaceDestroyed(SurfaceHolder holder) {
		// Surface will be destroyed when we return, so stop the preview.
		// Because the CameraDevice object is not a shared resource, it's very
		// important to release it when the activity is paused.
		mCamera.stopPreview();
		mCamera.release();
		mCamera = null;
	}

	private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
		final double ASPECT_TOLERANCE = 0.05;
		double targetRatio = (double) w / h;
		if (sizes == null)
			return null;

		Size optimalSize = null;
		double minDiff = Double.MAX_VALUE;

		int targetHeight = h;

		// Try to find an size match aspect ratio and size
		for (Size size : sizes) {
			double ratio = (double) size.width / size.height;
			if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)
				continue;
			if (Math.abs(size.height - targetHeight) < minDiff) {
				optimalSize = size;
				minDiff = Math.abs(size.height - targetHeight);
			}
		}

		// Cannot find the one match the aspect ratio, ignore the requirement
		if (optimalSize == null) {
			minDiff = Double.MAX_VALUE;
			for (Size size : sizes) {
				if (Math.abs(size.height - targetHeight) < minDiff) {
					optimalSize = size;
					minDiff = Math.abs(size.height - targetHeight);
				}
			}
		}
		return optimalSize;
	}

	Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
		public void onPictureTaken(byte[] imageData, Camera c) {
			onProgress=true;
			if (imageData != null) {

				Intent mIntent = new Intent();
				try {
					FileOutputStream out = new FileOutputStream(
							"/sdcard/Deltio1.jpg");
					Bitmap e = BitmapFactory.decodeByteArray(imageData, 0,
							imageData.length);
					e.compress(Bitmap.CompressFormat.JPEG, 65, out);
					out.close();			
					Intent i = new Intent(ACT, MediaSend.class);
					ACT.startActivity(i);
					 
				
				} catch (Exception e) {
					Toast
					.makeText(
							CON,
							"Πρόβλημα στην αποθήκευση.Βεβαιωθείτε ότι έχετε sdcard εγκατεστημένη",
							Toast.LENGTH_LONG).show();
					ACT.finish();
				}
				
				// FileUtilities.StoreByteImage(mContext, imageData,
				// 50, "ImageName");								
				
				SystemClock.sleep(2000);
				mCamera.startPreview();
				
				onProgress=false;
				
				

				// setResult(FOTO_MODE,mIntent);
				// finish();

			}
		}
	};

	public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
		// Now that the size is known, set up the camera parameters and begin
		// the preview.
		Camera.Parameters parameters = mCamera.getParameters();		

		//List<Size> sizes = parameters.getSupportedPreviewSizes();
		//Size optimalSize = getOptimalPreviewSize(sizes, w, h);
		//parameters.setPreviewSize(optimalSize.width, optimalSize.height);
		parameters.setPreviewSize(w, h);
		//mCamera.setParameters(parameters);
		mCamera.startPreview();
	}

	public void onClick() {
		if(!onProgress)
		{onProgress=true;
		mCamera.takePicture(null, mPictureCallback, mPictureCallback);
    }
	}
	
}
<!-- Page not cached by WP Super Cache. No closing HTML tag. Check your theme. -->

 2.

public class CameraPreview extends Activity { 
protected static final String TAG = "CameraPreview"; 
private Preview mPreview; 
 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
 
    // Hide the window title. 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
 
    // Create our Preview view and set it as the content of our activity. 
    mPreview = new Preview(this); 
    mPreview.setId(100); 
    RelativeLayout mainLayout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams mainLp = new RelativeLayout.LayoutParams(640, 480); 
    mainLp.leftMargin = 20; 
 
    mainLayout.addView(mPreview, mainLp); 
 
    Button btn = new Button(this); 
    btn.setOnClickListener(new OnClickListener(){ 
 
        public void onClick(View v) { 
            RelativeLayout.LayoutParams nLp = (LayoutParams) mPreview.getLayoutParams(); 
            nLp.leftMargin += 10; 
            Log.v(TAG,"nLp.leftMargin: " + nLp.leftMargin); 
            mPreview.setLayoutParams(nLp); 
        } 
 
    }); 
    btn.setText("Click me!"); 
 
    RelativeLayout.LayoutParams btnLp = new RelativeLayout.LayoutParams( 
            RelativeLayout.LayoutParams.WRAP_CONTENT, 
            RelativeLayout.LayoutParams.WRAP_CONTENT); 
    btnLp.addRule(RelativeLayout.BELOW, mPreview.getId()); 
 
    mainLayout.addView(btn ,btnLp); 
    setContentView(mainLayout); 
} 

}


    
[3] 发送邮件的另一步骤
    来源: 互联网  发布时间: 2014-02-18
发送邮件的另一方法

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, message); 
Intent mailer = Intent.createChooser(intent, null); 
startActivity(mailer); 
用上面的方法发送邮件可行,但是如果你里面的程序较多 好多程序都可以供你选择

 

想缩小一下范围可以用

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri data = Uri.parse("mailto:?subject=" + subject + "&body=" + body); 
intent.setData(data); 
startActivity(intent); 

1 楼 mapeijie888 2011-04-07  
收件人的参数是什么
Uri data = Uri.parse("mailto:?subject=" + subject + "&body=" + body);

    
最新技术文章:
▪Android开发之登录验证实例教程
linux iis7站长之家
▪Android获取手机SIM卡运营商信息的方法
▪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