android自动截图实现,Android实现截图功能(可根据该代码进行扩展功能)

Author:hmjiangqq

Email:jiangqqlmj@163.com

有些时候我们在进行做分享功能或者截图保存,今天写了一个简单的demo来实现截图功能,并且把截图保存到sdcard中.(当然这里只是简单的实现一下功能,当然还可以进行功能扩展.例如:摇一摇监听事件然后截图或者开启一个固定的时间然后进行截图操作)

废话不多说,效果比较简单,代码也不多(已经添加详细注释了);

ScreenShotUtils.java

package com.pps.screen.activity; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import android.util.Log; import android.view.View; /** * 进行截屏工具类 * @author jiangqingqing * @time 2013/09/29 */ public class ScreenShotUtils { /** * 进行截取屏幕 * @param pActivity * @return bitmap */ public static Bitmap takeScreenShot(Activity pActivity) { Bitmap bitmap=null; View view=pActivity.getWindow().getDecorView(); // 设置是否可以进行绘图缓存 view.setDrawingCacheEnabled(true); // 如果绘图缓存无法,强制构建绘图缓存 view.buildDrawingCache(); // 返回这个缓存视图 bitmap=view.getDrawingCache(); // 获取状态栏高度 Rect frame=new Rect(); // 测量屏幕宽和高 view.getWindowVisibleDisplayFrame(frame); int stautsHeight=frame.top; Log.d("jiangqq", "状态栏的高度为:"+stautsHeight); int width=pActivity.getWindowManager().getDefaultDisplay().getWidth(); int height=pActivity.getWindowManager().getDefaultDisplay().getHeight(); // 根据坐标点和需要的宽和高创建bitmap bitmap=Bitmap.createBitmap(bitmap, 0, stautsHeight, width, height-stautsHeight); return bitmap; } /** * 保存图片到sdcard中 * @param pBitmap */ private static boolean savePic(Bitmap pBitmap,String strName) { FileOutputStream fos=null; try { fos=new FileOutputStream(strName); if(null!=fos) { pBitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); return true; } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return false; } /** * 截图 * @param pActivity * @return 截图并且保存sdcard成功返回true,否则返回false */ public static boolean shotBitmap(Activity pActivity) { return ScreenShotUtils.savePic(takeScreenShot(pActivity), "sdcard/"+System.currentTimeMillis()+".png"); } }   然后直接在需要的地方进行调用就shotBitmap(pActivity)方法就行,布局文件如下:

调用代码:

boolean result = ScreenShotUtils.shotBitmap(MainActivity.this); if(result) { Toast.makeText(MainActivity.this, "截图成功.", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(MainActivity.this, "截图失败.", Toast.LENGTH_SHORT).show(); } 例子比较简单,效果如下:

422ce7f1701df8d58977aaee2bd6ac4b.bmp

f901c7a839097f04dcb0c9ff89b1f2e7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好,关于Java代码实现Android自动连接BLE设备的问题,我可以为您提供一些基本的思路和参考代码。首先,您需要使用Android中的BLE API来搜索和连接BLE设备。然后,您可以使用服务和特征值来与设备进行通信。以下是一些可能有用的示例代码: 1. 初始化BLE适配器和回调函数 ``` BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter(); BluetoothGatt mBluetoothGatt; //设备连接状态回调函数 private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { if (newState == BluetoothProfile.STATE_CONNECTED) { Log.d(TAG, "Connected to GATT server."); mBluetoothGatt.discoverServices(); //连接成功之后搜索设备的服务 } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { Log.d(TAG, "Disconnected from GATT server."); } } }; ``` 2. 搜索BLE设备 ``` //BLE设备广播回调函数 private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { //获取扫描到的设备信息 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (device.getName() != null) { Log.d(TAG, "Found device: " + device.getName()); if (device.getName().equals("My BLE Device")) { //如果找到指定设备 //停止扫描并连接设备 mBluetoothAdapter.stopLeScan(mLeScanCallback); mBluetoothGatt = device.connectGatt(getApplicationContext(), false, mGattCallback); } } } } }; //开始搜索设备 private void scanBLEDevices() { mHandler.postDelayed(new Runnable() { @Override public void run() { mBluetoothAdapter.stopLeScan(mLeScanCallback); } }, 10000); //设置扫描时间为10s mBluetoothAdapter.startLeScan(mLeScanCallback); } //设备搜索回调函数 private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { runOnUiThread(new Runnable() { @Override public void run() { Log.d(TAG, "Found device: " + device.getName()); } }); } }; ``` 3. 连接BLE设备并搜索服务 ``` //连接设备 private void connectToDevice(String deviceAddress) { BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(deviceAddress); mBluetoothGatt = device.connectGatt(this, false, mGattCallback); } //搜索服务 private void discoverServices() { if (mBluetoothGatt != null) { mBluetoothGatt.discoverServices(); } } //服务搜索回调函数 @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { if (status == BluetoothGatt.GATT_SUCCESS) { List<BluetoothGattService> services = gatt.getServices(); for (BluetoothGattService service : services) { Log.d(TAG, "Found service: " + service.getUuid()); } } else { Log.d(TAG, "Service discovery failed."); } } ``` 以上是简单的示例代码,您可以根据自己的需求进行相应的更改和扩展。同时,也需要注意安全与隐私问题,确保BLE设备的安全连接和数据传输。希望能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值