Project RC

一只腊鸡的技术成长。

Android 调用系统相机拍摄照片

创建于
分类:Dev
标签:JavaAndroid

1. 获取缩略图

使用 Intent 可以很方便地调用系统相机,通过 startActivityForResult 方法启动,代码如下:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE); // REQUEST_CODE 为预先定义的 int 常量

重载 Activity 的 onActivityResult 方法,可以获取返回的结果中的 Bitmap 并显示,代码如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        Bundle bundle = data.getExtras();
        Bitmap bitmap = (Bitmap) bundle.get("data");
        mImageView.setImageBitmap(bitmap); // mImageView 为预先定义的 ImageView
    }
}

出于性能方面的考虑,onActivityResult 中得到 data 里的 Bitmap 并不是完整照片,而是压缩过的很不清晰的缩略图。

……

Android 调用系统相机拍摄照片

在 Android Studio 中使用 Android NDK

创建于
分类:Dev
标签:JavaAndroidNDK

1. 环境

Android Studio 从 1.3 版本开始加入了 NDK 支持(见 Android NDK Preview),所以需要使用 NDK 的话,需更新到 >=1.3 的版本,本文中使用的是 1.5 版(写此文时最新版)。

NDK 版本要求 ndk-r10e(写此文时最新版),由于众所周知的原因,Android Studio 自带的 SDK 管理器下载 NDK 可能会失败,可以单独下载(可在 这里 下载)。

本文的操作系统环境为 OS X,不过 Windows 和 Linux 中的操作应该也相似。

……

在 Android Studio 中使用 Android NDK

OS X 上在 Java 项目中通过 JNI 调用 C/C++ 动态链接库

创建于
分类:Dev
标签:JavaJNI

1. 创建 Java 代理类

首先在 Java 项目中创建一个 DemoProxy 类,作为 Java 调用 C/C++ 动态库的代理类,内容如下:

package com.demo;

public class DemoProxy {
    static {
        System.loadLibrary("demo");
    }
    public static native double square(double a);
}

这段代码首先在静态代码块中加载动态库 demo,然后声明一个静态方法 double square(double a) 并用 native 关键字修饰,表明是一个 native 函数,在动态库中实现。

接着在终端中进入项目主目录,执行:

javac src/com/demo/DemoProxy.java -d ./bin

编译生成的 class 文件被放在了主目录下的 bin 目录(若没有需先创建)。

……

OS X 上在 Java 项目中通过 JNI 调用 C/C++ 动态链接库

树莓派上手三天总结

创建于
分类:Misc
标签:Raspberry PiLinux

7 月 25 日,伴随着一点冲动,就下单买了最新的树莓派 B+ 以及入门必备的一些配件,26 日下午送到,就开始了这三天的折腾。

1. 启动

首先要启动,到 树莓派官网 下载最新的固件,我下载的是 Raspbian June 2014 版本,下载好是 zip 文件,解压得到 img 镜像文件。然后要把 img 文件写入到 SD 卡里面。方法如下:

  • 在 Windows 上可以用一个叫 Win32DiskImager 的软件(这里下载),这个软件用起来超简单,只需要选好 img 文件和要写入的 SD 卡盘符,点「Write」等它写入完就可以了。
  • 在 OS X 上比 Windows 要麻烦一点,先用 df -h 命令查看当前挂载的卷,找到 SD 卡的分区对应的设备文件,如 /dev/disk1s1,然后用 diskutil unmount /dev/disk1s1 将这些分区卸载,再执行 diskutil list,记住 SD 卡对应的设备文件,如 /dev/disk1,然后用 dd bs=4m if=2014-06-20-wheezy-raspbian.img of=/dev/rdisk1 来写入镜像文件,当然 if 和 of 指向的地址都要改成你自己的,这个命令执行的时候没有提示,就卡住不动,一定要耐心等待,写入好了之后就会提示你。

于是装有 Raspbian 的 SD 卡就制作完成了,插到树莓派里,插上网线,接上电源,树莓派就会开机,如果有显示器,就从 HDMI 接口接过去就有显示了,不过据说如果要 HDMI 转 VGA 的话,千万不能用没有自带电源的转换线,一定要用自带电源接口的。当然我这里没有 HDMI 转 VGA 线,也没有 HDMI 接口的显示器,这种情况下要想连接到树莓派可以通过 SSH。

……

树莓派上手三天总结

Octopress 博客 deploy 失败的解决办法

创建于
分类:Misc
标签:OctopressBlog

参考资料:rake gen_deploy rejected in Octopress

今天在新系统里面设置 octopress 的时候遇到一个问题,就是 rake deploy 总是失败,有形如下面的错误提示:

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:richardchien/richardchien.github.io.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

经过各种搜索,似乎是远程仓库和本地的代码不一致,需要强行把本地的内容 push 到远程仓库,解决办法如下:

octopress 文件夹找到 Rakefile 文件,打开,找到 system "git push origin #{deploy_branch}" 这一行,改成 system "git push origin +#{deploy_branch}",然后再执行 rake deploy 就可以成功了,之后远程仓库的代码就和本地一致了,然后把 Rakefile 文件改回原来的 system "git push origin #{deploy_branch}",就 OK 了。

Octopress 博客 deploy 失败的解决办法

更换电脑或多台电脑同时使用 Octopress

创建于
分类:Misc
标签:OctopressBlog

如果你的电脑上的 Octopress 文件夹被误删了,或者你换电脑了,或者你想在多台电脑上同时都可以写博客,那么本教程将教你如何解决。

下面内容翻译自 Clone Your Octopress to Blog From Two Places

重新创建本地 Octopress 仓库

下面的内容将教你如何为已有的 Octopress 博客重新创建本地目录结构。

……

更换电脑或多台电脑同时使用 Octopress

用 Octopress 在 GitHub 上搭建博客

创建于 更新于
分类:Misc
标签:OctopressBlog

1. Octopress 是什么

Octopress 官网给出的引言如下:

First, I want to stress that Octopress is a blogging framework for hackers. You should be comfortable running shell commands and familiar with the basics of Git. If that sounds daunting, Octopress probably isn't for you.

意思是:首先,我想强调一下,Octopress 是为黑客而生的博客框架。你需要熟悉如何运行 shell 命令以及 Git 的一些基础知识。如果这些前提技能你听到就头疼,那么 Octopress 可能并不适合你。

其实,这个引言绝对有点夸张了,那么我的理解是,你只需要有一个经得起折腾的心脏和大脑,知道怎么在网上搜索,那么用 Octopress 就没什么问题。即使你没有它说的那些基础,只要照着步骤做就可以完成,甚至通过搭建博客这个过程,你会收获「熟悉如何运行 shell 命令以及 Git 的一些基础知识」这样一个结果,只要你肯动脑。

本教程适用于 Windows 和 OS X 系统。

……

用 Octopress 在 GitHub 上搭建博客

Octopress 搭建博客总结以及可选功能

创建于
分类:Misc
标签:OctopressBlog

1. 总结

写博客基本步骤如下:

# 创建新文章
rake new_post[‘title’]

# 编辑 Markdown 文件

# 生成静态页面
rake generate

# 在本地预览
rake preview

# 发布到 GitHub
rake deploy

# 将修改的源码推送到 source 分支
git add .
git commit -am 'your commit message'
git push origin source

2. 添加新页面(可选)

添加一个新页面其实和添加文章一样简单,同样是在终端/命令提示符,cd 进去 octopress 目录之后,执行下面命令:

rake new_page[super-awesome]

rake new_page[super-awesome/page.html]

两条命令都会在 source 目录创建一个 super-awesome 文件夹,差别在于,上面的命令创建的目录里面有一个 index.markdown 文件,访问它的链接为 root_url/super-awesome/,后者创建的目录里面是 page.html,访问方式 root_url/super-awesome/page.html,当然如果你输入的是 super-awesome/index.html 那么也是可以通过 root_url/super-awesome/ 访问的。

新创建的页面采用的页面布局是 page,如果你仔细观察的话,会发现之前创建的文章的页面布局是 post,页面布局的HTML在 source/_layouts 目录中,有能力的话可以自行修改布局。

……

Octopress 搭建博客总结以及可选功能