第一篇:如何使用安卓手机软件拍摄延时摄影 第二季解读
如何使用安卓手机软件framelapse拍摄延时摄影
上一篇是介绍如何使用软件lapse it 来拍摄延时摄影,lapse it 功能比较多,framelapse与之比较的话就简单许多,总之各有千秋,凭个人喜好选择。
不多说,进入正题。
Framelapse 这款软件是傻瓜式的操作。安装包就只有一兆多,不过功能方便实用。
一、Framelapse打开后界面 1.右上角是显示拍摄信息
解读为 frame interval :5 sec
拍摄间隔时间 5秒
Video duration:infinite
拍摄持续时间 无穷(随便拍只要你电量够,sd卡容量够大)Recording
:infinite
录音
木有
Speed
:150x
速度
知识点:因为5秒拍一张,(帧率每秒帧数默认为30帧)所以要得到1秒的拍摄结果时间T1 拍摄持续时间T 就是5×30 = 150秒
2.右中部按钮是 控制拍摄开启和停止的,没有暂停
3.右下角 是更多设置的选项
(1)Setting普通选项
(1.sleep mode(pro)默认关闭状态,需要专业版解锁这个功能 这个功能其实很好,因为关闭屏幕会省好多电,不过家用简单拍一下普通版就已经够用了
(2 Shutter sound 静音 同样省电点 关闭之(3 Switch camera 可以切换前后摄像头 为了画质好些 还是用后置摄像头(4 community 社交分享功能
Google+和facebook天朝不可用呀(5 help reset about 可以重置所有设置(2)pro 购买专业版链接
(3)Options 高级选项
(1 High performance 高性能模式 要开启
(2 Notification Light 信息提示灯 其实软件没有太多手机权限,这个无所谓
(3 Show Information 显示拍摄信息 这个就是刚才右上角的拍摄信息 要开启
(4 Torch Light 闪光灯关闭或保持开启 关闭省电
(5 Storage Directory 存储目录 可以选择存储在手机端 还是SD卡 推荐SD卡 不然占用手机内存太多的话手机会变卡 <1可以选择默认存储目录 软件有两个存储位置选项
Default就是系统默认存储路径 Custom 就是自己选择的存储路径
<2通过点击 edit custom path 编辑存储位置 选择放到SD卡中
如果遇到 设置为sd卡后不能拍摄的话就更改回默认存储路径。
(6 video frame rate 视频画面速度
这项是用来调整每秒显示多少帧画面的 <1 default recommended 推荐用默认的 当然里面也有其他选项,如24 fps 每秒帧数24帧
间隔时间5秒,得到1秒拍摄结果 需要120秒拍摄时间(7 zoom 调整变焦
这个是高级设置option里的最后一个选项 在最底下我就没有截图出来
作用是 拍摄之前可以数码变焦 放大缩小调整到需要的画面 知识点:
1.也可以在拍摄界面,用两个指头同时向内靠近滑动或向外远离滑动 就会跳出zoom的变焦设置条 2.在拍摄时候是不能进行数码对焦点,不过可以点击屏幕进行 对焦 4.拍摄界面左侧工具栏--第一个 查看拍摄记录(1.recent video 播放和删除 最近拍摄的一个视频
(2 video gallery查看视频库,可选择全部删除或挑选视频删除
5.拍摄界面左侧工具栏--第二个 调整拍摄视频分辨率video resolution
(1 可以选择最高highest(其实就是1080p)推荐这个选项 毕竟都是想要拍的清晰点
(2 在右下角有个rotation 选项
点击弹出 video rotation 视频录制风格选项 <1 landscape(default)风景 正常角度 <2 portrait
肖像
视频效果顺时针转90度
<3 reverse landscape 反向景观 视频效果顺时针转180度 <4 reverse portrait
视频效果逆时针转90度 这个效果不试试还真不知道
可以方便在手机倒置时候 调整这个选项
6.拍摄界面左侧 工具栏--第三个
拍摄时间间隔设置 frame interval(1 可以选择列表中的 0.1秒0.5秒 1秒 5秒 10秒 15秒 30秒 60秒时间间隔(2 右下角custom 可以手动输入自己喜欢的间隔时间 不过应该是专业版才能够用
7.拍摄界面左侧 工具栏--第四个 拍摄持续时间设置 video duration(1 可以选择列表 中的 infinite(无限时间)7秒 10秒 30秒 1分钟3分钟5分钟10分钟30分钟1小时 推荐使用第一项
(2 右下角的custom 也是专业版才能用的 任意输入设置拍摄持续时间
8.拍摄界面左侧 工具栏--第五个 拍摄参数设定 这个可以用默认设置 有兴趣的可以设置一下看看不同的效果
(1 self timer 自动定时器
可以设定 多少时间之后开始拍摄
自己在拍的话关闭就行了
(2 auto focus 自动对焦模式设定
<1 auto 自动模式 <2 infinity 无限远 <3 macro 微距 <4 continuous-video 连续视频 <5manual 手动控制
如果有手机支持更换可以手动控制对焦镜头的话 尽管用
(3 白平衡设定
<1incandescent
白炽灯 <2.fluorescent
荧光灯
<3.warm-fluorescent
暖色荧光灯 <4.daylight
日光 <5.cloudy-daylight
阴天 <6.twilight
黄昏 <7.shade
渐变 <8.manual-cct
手动设置
(4滤镜效果
<1 mono
单色调 黑白色
<2 negative
负片模式
<3 solarize
过度曝光
<4 sepia
褐色 怀旧
<5 posterize
色调分离 广告宣传色彩 <6 aqua
浅绿色 <7 emboss
浮雕 <8 sketch
素描 <9 neon
霓虹灯
(5.曝光补偿 拍摄时候一般选择默认值 手机相对相机 摄像头还是会差些,在较暗的情况下会出现很严重的噪点,因此 想拍夜景的延时摄影难度就大些
(的确还没有拍过夜晚车水马龙的延时摄影,拍过山顶上傍晚的延时摄影,太暗了噪点也多)
二、拍摄过程介绍 重点看这个(傻瓜模式 老少咸宜)1.开始拍摄
在设置完参数 后,点击 拍摄按钮进行拍摄。当拍摄按钮变成红色时候就是拍摄进行中。(1 拍摄界面中 显示 拍摄参数 右上角所示
(2 按下拍摄按钮开始拍摄 按钮变红,当再次按下红色按钮时就停止拍摄,按钮恢复蓝色(3 底部显示已经拍摄好的 延时摄影视频时间
这里设置间隔时间1秒,拍摄持续时间 无限,拍摄质量分辨率 1080P 那么就是 拍摄15秒后 得到1秒的延时摄影视频
正是因为只有 拍摄 开启和停止,因此没事情不要去打断它
2.感觉拍的差不多时候
停止拍摄
例如拍日出 拍到大太阳很高 拍日落,太阳早不见掉了,天色渐暗已经不适合拍摄时就可以停止拍摄了
3.查看过程拍的视频
点击刚才介绍的查看记录按钮
点击recent video 查看刚拍的延时摄影视频
4.感觉不错的话就分享吧 点击 拍摄界面右下角的更多设置--community 其实如上所述这个功能在我们这是个鸡肋。不过会翻墙的童鞋就好用哆啦。
知识点:
1.也可以在拍摄界面,用两个指头同时向内靠近滑动或向外远离滑动 就会跳出zoom的变焦设置条
2.在拍摄时候是不能进行数码对焦点,不过可以点击屏幕进行 对焦
注意:
0.如果遇到 设置为sd卡后不能拍摄的话就更改回默认存储路径。
1.拍摄时候 记得点击一下屏幕进行对焦 不然拍出来没对焦的视频就懊恼死 设定时候设置为 自动对焦模式
2.拍摄推荐购买一个三脚架 方便设置拍摄角度,以及加强最重要的稳定性 不稳定时候拍出来就是个扎扎,以前拿在手上拍,都不带稳定画面的
3.拍摄时保证电量充足,以及内存足够大 不然没拍一点没电了,再着急也没用
4.拍摄过程中不要因为手机 来不重要的信息就碰手机 软件一切换到其他任务时候就停止拍摄了
想要安卓手机下拉菜单看看时间也不行,也会打断拍摄 5.放置在安全的地方 防雨 防雷 防被拿走
就自己一个人的话还是守着设备比较好
6.如果有2个手机的话拍摄机会更多一些,能够找不同的角度拍摄同时段发生的事件
7.其实 百度经验可以先用office软件编辑一下,然后再转到网络编辑器中,这样会便于编辑一些
另外就是图片,可以新建一个图片素材文件夹,每一个图片都按照步骤顺序加上数字命名一下各自的 作用,方便上传到网络
读书的好处
1、行万里路,读万卷书。
2、书山有路勤为径,学海无涯苦作舟。
3、读书破万卷,下笔如有神。
4、我所学到的任何有价值的知识都是由自学中得来的。——达尔文
5、少壮不努力,老大徒悲伤。
6、黑发不知勤学早,白首方悔读书迟。——颜真卿
7、宝剑锋从磨砺出,梅花香自苦寒来。
8、读书要三到:心到、眼到、口到
9、玉不琢、不成器,人不学、不知义。
10、一日无书,百事荒废。——陈寿
11、书是人类进步的阶梯。
12、一日不读口生,一日不写手生。
13、我扑在书上,就像饥饿的人扑在面包上。——高尔基
14、书到用时方恨少、事非经过不知难。——陆游
15、读一本好书,就如同和一个高尚的人在交谈——歌德
16、读一切好书,就是和许多高尚的人谈话。——笛卡儿
17、学习永远不晚。——高尔基
18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向
19、学而不思则惘,思而不学则殆。——孔子
20、读书给人以快乐、给人以光彩、给人以才干。——培根
第二篇:[安卓开发] Broadcast 三种广播的使用总结
[安卓开发] Broadcast 三种广播的使用
总结
1、什么是安卓的Broadcast?
安卓的四大组件之一,是一种广泛应用在应用程序之间传输信息的机制。
2、什么是安卓的BroadcastReceiver?
是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播。例如系统的广播有开机广播: 系统在开机时候会发送开机广播,程序接收到之后,能进行开机自启动。网络状态改变广播: 3g变wifi、网络断开等。电量改变广播等等。。
3、Anroid为什么要这样设计?
大大减少开发工作量和开发周期
作为开发者,只需要掌握BroadcastReceiver
4、怎么理解Broadcast和BroadcastReceiver ?
Broadcast就像现实中的广播电台,他发广播信号来,然后我们用收音机来接收,然后处理,并且播放出声音,BroadcastReceiver就相当于那台收音机。
5、使用方法
发送:
把信息装入一个Intent对象(如:Action、Category),通过调相应的方法将Intent对象以广播的方式发送出去: sendBroadcast();
sendOrederBroadcast();sendStickyBroadcast();接收:
当Intent发送之后,所有已经注册receivedBroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceiver()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceiver()方法。注意:
BroadcastReceiver需要注册
静态注册
代码动态注册
6、注意!!
BroadReceiver生命周期只有十秒左右,不能直接执行耗时操作,不然会出现ANR(应用程序无响应),也不能用子线程来做,因为每次广播来的时候都会创建一个Reveiver对象,并且调用onReceiver,执行完之后,对象会立刻被销毁,子线程也没了
要做耗时操作的话,应该通过发送Intent给Service,由Service来完成。
动态注册广播接受者的话要在Destory回调事件进行unregister
7、广播的分类
普通广播(Normal broadcast)所有监听该广播接受者都可以监听到该广播 同级别接收先后顺序是随机的(无序)级别低的后收到广播
接收器不能截断广播的继续传播,也不能处理广播 同级别动态注册高于静态注册 有序广播(Oredered broadcast)按照接收者的优先顺序来接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大优先级越高,可以终止广播的继续传播,接受者可以修改intent的内容。同级别接收顺序是随机的 级别低的后收到
能截断广播的继续传播,高级别的广播接收器接收广播后能决定时候截断。能处理广播
同级别动态注册高于静态注册
异步广播(粘滞性滞留广播)ps:已被弃用
不能处理结果给下一个接收者,无法终止广播。一直存在
可以先发送广播,再注册接收器
需要在清单文件添加android.permission.BROADCAST_STICKY权限
8、Demo
布局actibity_main三个按钮:
android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical”>
MainActivity.Java
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button btOne;
private Button btTwo;
private Button btThree;
MyReiceiverThree myReiceiver = new MyReiceiverThree();
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btOne =(Button)findViewById(R.id.bt_one);
btTwo =(Button)findViewById(R.id.bt_two);
btThree =(Button)findViewById(R.id.bt_three);
btOne.setOnClickListener(this);
btTwo.setOnClickListener(this);
btThree.setOnClickListener(this);
//动态注册,在当前activity的生命周期內运行
/*IntentFilter filter= new IntentFilter(Config.BC_ONE_ACTION);
MyReiceiver myReiceiver = new MyReiceiver();
registerReceiver(myReiceiver,filter);*/
}
@Override
public void onClick(View view){
Intent intent = new Intent();
switch(view.getId()){
case R.id.bt_one:
//发送普通广播
intent.setAction(Config.BC_ONE_ACTION);
intent.putExtra(“msg”,“这是普通广播”);
sendBroadcast(intent);
break;
case R.id.bt_two:
//有序广播
intent.setAction(Config.BC_TWO_ACTION);
intent.putExtra(“msg”,“这是有序广播”);
sendOrderedBroadcast(intent,null);//其中第二个参数是设置权限,即接收器必须具有相应的权限才能正常接收到广播。
break;
case R.id.bt_three:
//异步广播
intent.setAction(Config.BC_THREE_ACTION);
intent.putExtra(“msg”,“这是异步广播”);
sendStickyBroadcast(intent);
//可以先发送 后注册
IntentFilter filter = new IntentFilter(Config.BC_THREE_ACTION);
registerReceiver(myReiceiver, filter);
break;
}
}
@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(myReiceiver);
} }
MyReceiver.java
public class MyReiceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
//获取处理的的广播,普通广播不能获取处理
//true代表如果前面的接收器没有存放数据,则自动创建一个空的Bundle对象,false则表示如果前面的接收器如果没有存放任何数据则返回null。
Bundle bundle= getResultExtras(true);
System.out.println(“接收器1接收到处理的值:”+bundle.getString(“msg”));
System.out.println(“接收器1:”+intent.getStringExtra(“msg”));
} }
MyReceiverTwo.java
public class MyReiceiverTwo extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
//Toast.makeText(context,intent.getStringExtra(“msg”),Toast.LENGTH_SHORT).show();
System.out.println(“接收器2:”+intent.getStringExtra(“msg”));
abortBroadcast();
//截断广播,不让别的接收器继续接收,有序广播才能成功拦截
//处理广播
Bundle bundle = new Bundle();
bundle.putString(“msg”,“处理过后的广播”);
setResultExtras(bundle);//
} }
MyReceiverThree.java
public class MyReiceiverThree extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
//Toast.makeText(context,intent.getStringExtra(“msg”),Toast.LENGTH_SHORT).show();
System.out.println(“接收器3:”+intent.getStringExtra(“msg”));
} }
Config.java
public class Config {
public static final String BC_ONE_ACTION = “com.example.testbroadcasetwo.bcone”;
public static final String BC_TWO_ACTION = “com.example.testbroadcasetwo.bctwo”;
public static final String BC_THREE_ACTION = “com.example.testbroadcasetwo.bcthree”;}
Androidmanifest.xml
package=“com.example.testbroadcasetwo”> //异步广播需要 一个权限 android:allowBackup=“true” android:icon=“@mipmap/ic_launcher” android:label=“@string/app_name” android:supportsRtl=“true” android:theme=“@style/AppTheme”> String msg = intent.getStringExtra(“msg”); iShowView =(MainActivity)context; if(action.equals(Config.BC_ONE)){ //接收到普通广播 iShowView.updateText(msg); //回调给HandleBroadcast } } public void setiShowView(IShowView iShowView){ this.iShowView = iShowView; } } IShowView.java 回调到activity更新ui的接口 public interface IShowView { void updateText(String msg);} MainActivity.java publicclassMainActivityextendsAppCompatActivityimplements View.OnClickListener,IShowView{ private Button btOne; private TextView mTvResult; //p层,处理数据 private HandleBroadcast handleBroadcast; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handleBroadcast = new HandleBroadcast(this,this); btOne =(Button)findViewById(R.id.bt_one); mTvResult =(TextView)findViewById(R.id.tv_result); btOne.setOnClickListener(this); } @Override public void onClick(View view){ switch(view.getId()){ case R.id.bt_one: handleBroadcast.sendMyBroadcast(TYPE.NORMAL); break; } } /** * 广播接收处理完毕之后回调更新ui * @param msg 要显示的文字 */ @Override public void updateText(String msg){ mTvResult.setText(msg); } } activity_main.xml android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical”> android:id=“@+id/bt_one” android:layout_width=“match_parent” android:layout_height=“50dp” android:text=“发送广播” /> android:id=“@+id/tv_result” android:layout_width=“match_parent” android:layout_height=“60dp” android:text=“结果” android:gravity=“center” />