Android菜鸟日记15-传感器与摄像头

传感器
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
//获得传感器控制器[SensorManager]
//getContext()获得环境
//getSystemService(Context.SENSOR_SERVICE);获得系统服务(传感器)

sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
//注册传感器监听器
//(监听器、监听内容、监听精度)
//监听器 既 监听内容发生变化的回调函数
//监听内容
Android提供很很多种传感器 传入监听的具体哪一种传感器
//监听精度 多久监听一次

传感器监听器
实现SensorEventListener接口
复写下面方法
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub

pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}

}
重点是onSensorChanged()
当监听的具体传感器发生变化时,调用的函数。
可以从传入的SensorEvent中取值
SensorEvent.values[对应你想取得值(这个值是要在你监听的传感器上有的)]
SensorManager.DATA_Y 意思是在正拿手机的情况下手机与地面的倾角。


摄像头
surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);
//使用摄像头是需要使用到SurfaceView
//获得SurfaceView对象
surfaceHolder=surfaceView1.getHolder();
//获得SurfaceView的holder
//对SurfaceView的操作都在holder上进行
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//设置 Type
surfaceHolder.addCallback(this);
//设置回调函数对象
//当SurfaceView创建 销毁是 调用此对象onCreate onDestroy方法
//此函数需要实现SurfaceHolder.Callback接口

回调函数Callback内容
public void surfaceCreated(SurfaceHolder holder) {
//当SurfaceView创建时调用此方法
camera=Camera.open();

try {

Camera.Parameters parameters=camera.getParameters();
//获得camera对象的参数对象
Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//获得camera对象的预览大小
camera.setPreviewDisplay(surfaceHolder);
//设置camera对象的预览显示,显示在surfaceHolder上。[既SurfaceView]
camera.startPreview();
//设置camera对象的预览开始预览
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}
注意:
摄像头默认是横向拍摄的
所以要在AndroidManifest.xml下把该activity布局设置成横向的。
使用摄像头还需要开启权限
在<manifest>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

传感器完整代码
package com.poolo;

import android.content.Context;
import android.hardware.Camera;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class SensorControl extends View implements SensorEventListener {

private SensorManager sensorManager;
float pitch = 0f;
TextView v = null;

public SensorControl(Context context, AttributeSet attrs) {
super(context, attrs);

// create SurfaceHolder
sensorManager = (SensorManager) getContext().getSystemService(
Context.SENSOR_SERVICE);
// registerListene
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
}

private Object getDefaultSensor(int typeOrientation) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub

pitch = event.values[SensorManager.DATA_Y];
if (pitch < 0) {
pitch = pitch * -1;
}
Log.v("myTag", "pitch:" + pitch);
if (v != null) {
v.setText("pitch:" + pitch);
}

}

public void setTextView(TextView v) {
this.v = v;
}
}


摄像头完整代码
package com.lurencun.poolo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class CameraTempActivity extends Activity implements SurfaceHolder.Callback {
/** Called when the activity is first created. */
SurfaceHolder surfaceHolder;
SurfaceView surfaceView1;
Button button1;
ImageView imageView1;
Camera camera;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//设为横向显示。因为摄像头会自动翻转90度,所以如果不横向显示,看到的画面就是翻转的。
//本例中不横向

surfaceView1=(SurfaceView)findViewById(R.id.surfaceView1);

surfaceHolder=surfaceView1.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera=Camera.open();
try {

Camera.Parameters parameters=camera.getParameters();

Camera.Size a=parameters.getPreviewSize();
Log.v("myTag", "a.height:"+a.height);
Log.v("myTag", "a.width:"+a.width);
parameters.setPreviewSize(480, 320);
//设置参数
camera.setPreviewDisplay(surfaceHolder);
//摄像头画面显示在Surface上
camera.startPreview();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println("surfaceDestroyed");
camera.stopPreview();
//关闭预览
camera.release();
//释放资源
}

}


2011-9-16
Android摄像头数据采集与处理 android Camera2使用 前言:由于有关camera2使用和对数据处理的比较少所以笔者也有着乐于助人心所以有了后面的内容。咋们废话不多说先把流程和目的说下。首先是获取到相关摄像头id、然后打开摄像、接收摄像头数据回调、将y、u、v拼接成完整的yuv、对数据进行旋转生成正常用户看到的画面,以及对yuv数据编码为h264数据。 Camera2 API介绍 1.获取前或者后置摄像... 阅读详情

相关推荐

Android摄像头传感器、定位等功能代码

Android摄像头传感器、定位等功能代码,可以直接运行在Android studio上面

android 传感器种类,传感器  |  Android 开源项目  |  Android Open Source Project

Android 传感器使应用可以访问移动设备的底层实体传感器。它们是负责提供数据的虚拟设备,由传感器硬件抽象层 (HAL) sensor.h 进行定义。什么是 Android 传感器?Android 传感器属于虚拟设备,可提供来自以下各种物理传感器的数据:加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器。提供数据的物理设备列表中不包括相机、指纹传感器、麦克...

weixin_42352222的博客 344

Android摄像头传感器、定位等功能代码,可以直接运行在Android studio上面

Android摄像头传感器、定位等功能代码,可以直接运行在Android studio上面

Sensor流程(一)

1.APP层(注册sensor流程) 1.1 SensorManager.registerListenerImpl 1)如果没注册过则new SensorEventQueue,在SensorEventQueue构造中会new Receiver,用来接收数据(后续分析) 2)将要注册的sensor add进与linstener绑定的SensorEventQueue中。 1.2 SensorEventQueue.addSensor 1)加入到mActiveSensors中 1.3 BaseEventQ

二叉树 2238

瑞芯微RV1126B芯片实战:如何用3Tops NPU打造智能安防摄像头(附配置指南)

本文详细介绍了基于瑞芯微RV1126B芯片构建高性能智能安防摄像头的实战经验。文章深入剖析了其3Tops NPU与独立AI-ISP的协同优势,提供了从硬件选型、开发环境搭建、AI模型部署到系统调优的全流程配置指南,帮助开发者充分发挥芯片潜力,实现高效、稳定的智能视觉应用。

weixin_29281915的博客 442

Hifiasm参数调优实战:当N50不理想时的7个排查方向与解决方案

本文详细解析了Hifiasm参数调优实战,针对基因组组装中N50不理想的7个排查方向与解决方案。通过调整--hom-cov、-D、-N等核心参数,结合HiFi数据和参考基因组分析,有效提升组装质量。文章以猪毛菜基因组为例,展示了从2.1MB到4.3MB的N50优化过程,为生物信息学研究者提供实用指南。

weixin_30642561的博客 425

Android教程之实现动作感应技术

今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作感应试试吧!就在这里记录下收获吧!1.发现Android提供了SensorListener接口2.要使用还得有个动作感应管理器SensorManagerJava代码   1. //取得SensorManager   ...

weixin_34290390的博客 134

蠕虫病毒代码(纯属参考,请勿用于非法事件)

1.介绍蠕虫病毒 蠕虫病毒是一种常见的计算机病毒,是无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。 计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据和恶意篡改系统. 影响计算机使用并且能够自我复制的一组计算机指令或者程序代码 中文名:蠕虫病毒 传染方式:网络和电子邮件 外文名:Worm virus 类型:计算机病毒 2.代码(建议使用虚拟机,否则你的计算机将会就地报废,使用时要关闭电脑病毒保护,否则程序会...

Kenny20211105的博客 2万+

13.Android学习之传感器与定位服务(一)

传感器是一种微型的物理设备,能够探测、感受到外界信号,并按一定规律转换成我们需要的信息。在Android系统中,提供了用于接收这些信息并传递给我们的API。利用这些API就可以开发出想要的功能。Android系统中的传感器可用于监视设备的移动和位置以及周围环境的变化。例如,实现微信摇一摇功能时,可以使用加速度传感器来监听各个方向的加速度值;实现神庙逃亡游戏时,可以使用方向传感器来实现倾斜设备变道功能。......

ttycr的博客 1467

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

Rockyoung 3321

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

jane0819的博客 521

Android传感器使用实例1

以下仅是传感器使用实例,关于传感器的详细简绍请参考《Android传感器的环境监控》。 文件1:Main.java import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.Map.Entry; import android.app.Activity; ...

mmdev 216

Qt 调用YOLO模型(代码)

本文介绍了如何在 Qt C++ 环境中集成 YOLO 模型进行目标检测,包括模型封装、界面设计和实时处理等关键步骤。通过这种方法,你可以快速开发出具有目标检测功能的 Qt 应用程序,应用于监控系统、机器人视觉、图像分析等多个领域。

轩宇的博客 259

Android重力感应SensorEventListener详解

两个类: 1、SensorTest类,是Acvitivity 2、SensorListenerTest类,实现了SensorEventListener类, SensorTest.java: package com.sensor; import android.app.Activity; import android.os.Bundle; public class S

三少GG 1万+

RK3568平台开发系列:Android环境下CAN的使用

在RK3568平台上,我们可以利用Android环境中的API来实现CAN的使用。通过以上步骤,我们可以在Android应用中发送和接收CAN数据,并进行相应的处理。当接收到CAN数据时,将触发onMessageReceived回调方法,我们可以在这个方法中对接收到的数据进行处理。在上述代码中,我们指定了CAN的ID为0x123,数据为{0x01, 0x02, 0x03},并设置了标志位和周期。接收CAN数据需要注册一个监听器,并在监听器中处理接收到的数据。发送CAN数据需要指定CAN的ID和数据。

2301_79330513的博客 1912

LVGL 9Text Area 控件 (lv_textarea) 使用指南

是一个可编辑的文本输入控件,通常用于在用户界面中输入和编辑多行或单行文本。该控件支持文本插入、删除、光标控制、文本选择、密码输入等功能。它的文本内容可以通过键盘、API 或事件进行修改,还可以设置最大文本长度、占位符文本和密码模式等。是一个强大且灵活的文本输入控件,适用于多种用户输入场景,支持文本插入、删除、光标控制、密码输入等功能。通过 LittlevGL 提供的丰富 API,开发者可以自定义文本区域的外观和行为,实现复杂的文本输入需求。

m0_62599305的博客 1673

利用android手机摄像头智能测量物体距离,高度

经过在下调研了利用手机摄像头智能测距,半个月断断续续得出几个方法,附上两个demo,然而东西都比较垃圾,比起人们想要的,差距十万八千里。为了科技的进步,我就自不量力地抛砖引玉了,希望能有大牛阅读到这篇博客的时候,能给我一些指导,不胜感激。方法一: 由针孔摄像头推导结果。多次测量取像素因子法。这是一位叫张拭心朋友的做法,然后他的理论依据,算法都没有介绍,也不知道来自哪里。经过询问他本人也没有给出回答...

hycfire的博客 3万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

手机摄像头测距原理

手机摄像头测距原理

皖江的博客 22万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 传感器+陀螺仪控制摄像头

请问有么有人知道用android 陀螺仪控制摄像头,然后随着摄像头的旋转,陀螺仪会标注周围建筑物的名称?????在线等????急急急???

guoxuliang_123的博客 1494

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android 传感器(Sensor)API教程 (七) 倾斜加速度

原帖地址: http://www.androidegg.com/portal.php?mod=view&aid=649 1.5 倾斜传感器     在加速度传感器的那一节里面Low-Pass Filter的处理和手机的倾斜大致意思我们应该能理解了。但是,到目前为止我们取得的形

Gracker的专栏 1645

AndroidStudio调用摄像头

逻辑部分: package com.example.qing.third; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Build; import a...

天上掉下两毛钱 3029

Android Studio调用摄像头

演示代码的功能,调用摄像头拍照,然后返回把所拍的照片显示出来 1、首先呢,我们先创建一个项目,然后修改一下布局文件activity_main.xml,ImageView是将拍照的图片显示出来: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.c...

你的外祖父的博客 1万+

Android 开发中关于摄像头方向的理解

「code小生」一个专注 Android 领域的技术平台公众号回复 Android 加入我的安卓技术群作者:tsia链接:https://www.jianshu.com/...

code小生 2477

[android]layout_weight 在layout_width 为fill_parent 与wrap_content 时的不同含义

  转自:http://hi.baidu.com/ljlkings/blog/item/fa2a59803f839a82f603a6b2.html?timeStamp=1305190390481       我的话: 简单的说weight代表权重 在layout_width =fill_parent 时 组件填充是要尽可能的大 那么权重重的占领的位置就多。[既1的权重比2...

ipoolo的专栏 1341

[android]动态改变按钮背景状态 StateListDrawable

  动态改变按钮背景状态   很少用到 上次和六哥聊到。六哥有心 查了下  以下是DEMO     public static StateListDrawable setStateListDrawable(Context mActivity, int up, int down) { StateListDrawable stateListDrawable = new Sta...

ipoolo的专栏 453
上一篇: Android菜鸟日记14-对话框
下一篇: Android菜鸟日记16-notification
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值