65.9K
CodeProject 正在变化。 阅读更多。
Home

Loggy 项目

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.87/5 (13投票s)

2013 年 5 月 30 日

CPOL

5分钟阅读

viewsIcon

40232

downloadIcon

717

记录你的生活,每一天!

引言

Loggy 是一个开源项目,可以让你记录你的生活。它使用智能手机的麦克风和摄像头作为基本硬件来捕捉帧和音频流。这个项目的另一个重要组成部分是 mindwave 头戴设备。通过这个设备,我们可以获取我们的注意力水平。利用这些信息,我们可以选择记录图像或视频多媒体文件。

背景 

Mindwave... 这是什么?

Mindwave 是 Neurosky 生产的一款创新型头戴设备。Mindwave 将脑电波转换成数字电子信号。该设备有两种版本:

Mindwave... 两种版本,我应该选择哪一个?

对于本项目的范围,Mindwave 移动版是必不可少的。该设备支持蓝牙连接,通过蓝牙连接,它以 RAW 模式将数据发送到连接的设备。通过检索到的数据,我们可以解析头戴设备读取的各种频率。

我需要什么来实现这个项目?

创建这个项目需要以下基本要素:

  1. 带前置摄像头的 Android 智能手机
  2. Windows Seven 或 8
  3. Mindwave 头戴设备
  4. Loggy.apk
  5. FileZilla 服务器
  6. 照片库

复杂的架构但模块化

Loggy 分为两个逻辑模块:

  • 捕捉多媒体文件:多媒体文件由 Android 设备存储和处理。这些文件直接保存为图像和视频到外部 SD 卡内存。这样可以避免消耗内部内存。
  • 面部标记和照片组织:所有多媒体文件都通过 Android 设备和 Windows 服务器之间的 FTP 通信进行保存。通过这种模式,我们每天都会卸载 Android 设备。文件下载后,我们必须使用名为“照片库”的软件对其进行分类。

捕捉多媒体文件 

所有多媒体文件都在 Android 设备外部内存中临时捕捉、处理和保存。使用此方法,我们优化和简化了文件管理。允许捕捉文件的主要事件是由头戴设备提供的注意力水平。当注意力水平在 25% 到 60% 之间时,它会捕捉一帧。当注意力水平高于 60% 时,它会录制视频。每个视频长度为 10 秒。下方是逻辑图及其相应的源代码:

case TGDevice.MSG_ATTENTION:
    attentionBar.setProgress(msg.arg1/20);
    if((msg.arg1 > 25)&&(msg.arg1<60) && (!pictureTaken) &&(!recording)){
        sndUtility.playShortResource(R.raw.chimes);
        camera.takePicture(null, null, jpegCallback);
        pictureTaken = true;
    }else if(msg.arg1<50){
        pictureTaken = false;
    }
    if(msg.arg1 > 60){
        if(!recording){
            try{
                InitMediaRecoder();
                mediaRecorder.prepare();
                mediaRecorder.start();
                recording= true;
            }catch (IOException e) {
            // TODO: handle exception
            }
        }
    }
    break;

类初始化

Loggy 的业务逻辑使用 Android 框架的两个基本类来捕捉多媒体文件内容。

  • Camera 类:此类别用于设置图像捕捉、启动/停止预览、捕捉帧以及获取每一帧进行编码和录制视频。为了正确使用 Camera 类,请按以下顺序执行步骤:
    1. 通过其静态方法 open(); 获取类实例
    2. 使用 setParameters() 检索默认设置
    3. 如果需要,修改返回的 Camera.Parameters 对象并调用 Parameters(Camera.Parameters)
    4. 设置 surface holder 以查看预览
    5. 使用 startPreview() 方法启动预览

    之后,我们可以使用 takePicture() 方法拍照。

  • MediaRecorder 类:MediaRecorder 类用于录制音频和视频流。它需要 Camera 类的实例。下方是创建正确 MediaRecorder 对象的步骤:
    1. 创建 MediaRecorder 类的实例
    2. 设置音频源
    3. 设置输出格式
    4. 设置音频编码
    5. 设置软件保存视频文件的路径
    6. 调用 prepare() 方法以根据上述设置初始化 MediaRecorder
    7. 使用 start() 方法开始录制

    最后,调用 stopresetrelease 方法将 MediaRecorder 资源释放给另一个进程。

面部标记和照片组织

写完代码后,我们必须创建将多媒体文件发送到服务器的架构。使用的通信协议是 FTP(文件传输协议)。

智能手机配置

这一步非常简单。我们只需从 PlayStore 下载并安装 AndFTP 应用。

FTP 服务器配置

您知道 FileZilla Server 吗?如果您的答案是“否”,FileZilla Server 是一款允许创建 FTP 服务器的软件。使用它可以管理用户、主目录和相关权限。请按照以下步骤设置环境:

  1. 从这里下载 FileZilla Server 二进制包:https://filezilla-project.org/download.php?type=server
  2. 安装它
  3. 之后,运行服务器(图标在您的桌面上)
  4. 创建一个用户及其关联的 HOME_PATH - 此路径将包含 Android 手机捕捉的所有多媒体文件
  5. 使用 AndFTP Android 应用测试连接。

照片库

现在我们可以使用 Windows 照片库对传输的多媒体文件进行分类。打开照片库,然后单击左上角的蓝色按钮:

然后添加包含 Loggy 多媒体文件的文件夹

之后,在左侧列表中只选择 Loggy 的文件夹,然后单击“批量人物标签”以标记所有面孔

搜索人物

现在我们拥有了一个人物目录。通过照片库的搜索功能,我们可以知道例如何时遇到过某人,或者如果可能,我们可以知道我们在哪里遇到过他/她!

捕获的图像

以下是 Loggy 捕捉的几张图像!

  • 我使用 Loggy:

  • 我使用 Loggy(2):

  • 我开车时:

  • 我的鹦鹉

  • 我的鬣鳞蜥:

结论

使用 Loggy,您可以记录您的生活并在 Facebook 上标记您的朋友。我使用这个项目已经很多天了,并且已经存储了数 GB 的数据!更多信息请访问我的网站(www.blesciasw.it)。

© . All rights reserved.