2016-10-21 16:41:32 qq402335257 阅读数 2073
  • R语言从入门到精通系列之数据导入实战视频课程

    本篇首先介绍了如何将txt、csv、非机构花文本文件数据导入到R语言中,并介绍了四种导入excel数据的方法,在介绍R与MySQL数据库管理中,详细介绍了ROBBC包和RMySQL包的安装及使用;后介绍了网络数据爬虫技术,包括利用XML爬取网络表格数据、利用RCurl包批量下载ftp文件等方法。本课程配套课件和脚本均可下载,方便学员跟着视频自己动手操作。

    4577 人正在学习 去看看 谢佳标

一、到OpenCV官网下载SDK。

http://opencv.org/downloads.html


选择Android平台的SDK,下载完成后解压。

二、新建AndroidStudio的项目

这里项目名为TestOpenCV。


然后在File-New-ImportModule选择刚刚解压文件里的java文件夹。




三、修改OpenCVLibrary310里的build.gradle

这里和app的build.gradle一致。

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}


四、导入Module

在app文件夹右键选择OpenModuleSettings,Dependencies里添加刚刚导入的Module:openCVLibrary310



五、导入libs文件夹

将sdk解压文件夹里的libs文件夹拷到app/src/main文件夹下,并重命名为jniLibs。如果不需要在x86平台上跑可以删掉对应的lib文件。




六、测试导入是否成功。

在刚刚下载的sdk包里面有示例教程,这里将tutorial里面的相机预览项目移植进来。



首先在AndroidManifest.xml里面添加

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>


然后布局文件里面添加
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:opencv="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.opencv.MainActivity">
    <org.opencv.android.JavaCameraView
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        opencv:camera_id="any"
        opencv:show_fps="true"
        android:id="@+id/camera_view"
        android:visibility="gone"/>
</RelativeLayout>
Activity代码如下
package com.example.testopencv;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.SurfaceView;
import android.view.WindowManager;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;

public class MainActivity extends AppCompatActivity implements CvCameraViewListener2 {

    private CameraBridgeViewBase mOpenCvCameraView;
    private boolean              mIsJavaCamera = true;
    private MenuItem mItemSwitchCamera = null;

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };



    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        setContentView(R.layout.activity_main);

        mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view);

        mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);

        mOpenCvCameraView.setCvCameraViewListener(this);
    }

    @Override
    public void onPause()
    {
        super.onPause();
        if (mOpenCvCameraView != null)
            mOpenCvCameraView.disableView();
    }

    @Override
    public void onResume()
    {
        super.onResume();
        if (!OpenCVLoader.initDebug()) {
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
        } else {
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }

    public void onDestroy() {
        super.onDestroy();
        if (mOpenCvCameraView != null)
            mOpenCvCameraView.disableView();
    }

    public void onCameraViewStarted(int width, int height) {
    }

    public void onCameraViewStopped() {
    }

    public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
        return inputFrame.rgba();
    }
}

然后运行,就会出现相机预览的界面了。



2019-09-25 11:19:14 MLQ8087 阅读数 96
  • R语言从入门到精通系列之数据导入实战视频课程

    本篇首先介绍了如何将txt、csv、非机构花文本文件数据导入到R语言中,并介绍了四种导入excel数据的方法,在介绍R与MySQL数据库管理中,详细介绍了ROBBC包和RMySQL包的安装及使用;后介绍了网络数据爬虫技术,包括利用XML爬取网络表格数据、利用RCurl包批量下载ftp文件等方法。本课程配套课件和脚本均可下载,方便学员跟着视频自己动手操作。

    4577 人正在学习 去看看 谢佳标

简介


偶然发现一个神器 idegen,通过它我们可以用Android Studio阅读整个系统源码,非常方便。

话不多说直接来看怎么使用idegen,导入系统源码到Android Studio。

见证奇迹的时候 Windows / Ubuntu环境下,将整个Android系统源码导入到Android Studio中。


首先,我们要做的就是在源码环境下,即Linux环境下,执行以下命令:

$ source build/envsetup.sh
$ lunch aosp_x86-eng #(or pick your favorite lunch target)
$ make

// 上面的编译命令以实际的系统编译命令为准

$ mmm development/tools/idegen/
$ development/tools/idegen/idegen.sh

// 依次执行完上面的命令,就会在系统根目录下生成如下文件

 

.classpath (Eclipse)
android.ipr (IntelliJ / Android Studio)
android.iml (IntelliJ / Android Studio)


这里用的是Android Studio导入源码,只需要选择导入 android.ipr 这个文件即可。

同时,在development/tools/idegen/目录下有个README文件,我们来看下其中的内容。

development/tools/idegen/README

IDEGen automatically generates Android IDE configurations for IntelliJ IDEA
and Eclipse. Your IDE should be able to compile everything in a reasonable
amount of time with no errors.

If you're using IntelliJ...

    If this is your first time using IDEGen...

        IDEA needs a lot of memory. Add "-Xms748m -Xmx748m" to your VM options
        in "IDEA_HOME/bin/idea.vmoptions" on Linux or
        "IntelliJ IDEA.app/Contents/Info.plist" on OS X.

        Create a JDK configuration named "1.6 (No Libraries)" by adding a new
        JDK like you normally would and then removing all of the jar entries
        under the "Classpath" tab. This will ensure that you only get access to
        Android's core libraries and not those from your desktop VM.

    From the project's root directory...

        Repeat these steps after each sync...

        1) make (to produce generated .java source)
        2) development/tools/idegen/idegen.sh
        3) Open android.ipr in IntelliJ. If you already have the project open,
           hit the sync button in IntelliJ, and it will automatically detect the
           updated configuration.

        If you get unexpected compilation errors from IntelliJ, try running
        "Build -> Rebuild Project". Sometimes IntelliJ gets confused after the
        project changes significantly.

If you're using Eclipse...

    If this is your first time using IDEGen...

        Edit eclipse.ini ("Eclipse.app/Contents/MacOS/eclipse.ini" on OS X) and
        add "-Xms748m -Xmx748m" to your VM options.

        Configure a JRE named "1.5 (No Libraries)" under "Preferences -> Java ->
        Installed JREs". Remove all of the jar entries underneath "JRE system
        libraries". Eclipse will not let you save your configuration unless at
        least one jar is present, so include a random jar that won't get in the
        way.

    From the project's root directory...

        Repeat these steps after each sync...

        1) make (to produce generated .java source)
        2) development/tools/idegen/idegen.sh
        3) Import the project root directory into your Eclipse workspace. If you
           already have the project open, simply refresh it (F5).

Excluding source roots and jars

    IDEGen keeps an exclusion list in the "excluded-paths" file. This file
    has one regular expression per line that matches paths (relative to the
    project root) that should be excluded from the IDE configuration. We
    use Java's regular expression parser (see java.util.regex.Parser).

    You can create your own additional exclusion list by creating an
    "excluded-paths" file in the project's root directory. For example, you
    might exclude all apps except the Browser in your IDE configuration with
    this regular expression: "^packages/apps/(?!Browser)".

Controlling source root ordering (Eclipse)

    You may want some source roots to come before others in Eclipse. Simply
    create a file named "path-precedence" in your project's root directory.
    Each line in the file is a regular expression that matches a source root
    path (relative to the project's root directory). If a given source root's
    path matches a regular expression that comes earlier in the file, that
    source root will come earlier in the generated configuration. If a source
    root doesn't match any of the expressions in the file, it will come last,
    so you effectively have an implicit ".*" rule at the end of the file.

    For example, if you want your applications's source root to come first,
    you might add an expression like "^packages/apps/MyApp/src$" to the top
    of the "path-precedence" file.  To make source roots under ./out come last,
    add "^(?!out/)" (which matches all paths that don't start with "out/").


   上面的文档介绍了IntelliJ和eclipse怎么导入系统源码的方法,这里我们就只使用Android Studio来导入源码。所以就不管eclipse部分的东西了。因为Android Studio的前身就是IntelliJ,所以Android Stduio的导入方法和IntelliJ是一样的。

在执行完上面Linux系统部分的编译工作后,来看看我们正式进入Android Studio导入系统源码环节:

第一步:
  找到 Android Studio的安装路径中的 vmoptions文件并打开:”Android Studio Path”/bin/studio.exe.vmoptions或者studio64.exe.vmoptions
修改如下:

// 依据个人电脑配置,适量修改
-Xms2048m
-Xmx1024m

第二步:
打开Android Studio,选择 File -> Open

弹出路径选择框,输入相应的源码根路径,然后选择 android.ipr文件,就开始导入源码啦。

在导入过程中,需要等待索引的建立相关的关联,大概需要花15~30分钟,具体依据个人PC配置而定。


第三步:
当我们导入完源码后,我们就可以查看整个系统的源码啦,但是我们在跳转公共的类时,并没有跳转到frameworks目录下对应的源码类,而是jar包中的类,这不是我们想要的,我们需要让其跳转到相应的类中。我们就需要新建一个没有任何jar库的SDK给到系统源码项目的依赖。


那么,问题来了??!!

要怎么创建一个没有jar的SDK呢?

步骤如下:
右键项目名 -> Open Module Settings -> Project -> New(JDK)
然后选择 SDKs -> 编辑刚刚添加的jdk -> 删除Classpath目录下的所有包并命名为1.6(No Libraries)
再选择 Modules -> Module SDK 选择刚刚编辑的SDK(1.6(No Libraries)), 并删除下面所有的包。
大功告成,完成上面的步骤后,公共的类就直接指向系统的源码啦。

这里写图片描述

这里写图片描述

 


参考文章
AOSP Sources in the IDE

2016-08-29 23:26:18 u014304560 阅读数 2864
  • R语言从入门到精通系列之数据导入实战视频课程

    本篇首先介绍了如何将txt、csv、非机构花文本文件数据导入到R语言中,并介绍了四种导入excel数据的方法,在介绍R与MySQL数据库管理中,详细介绍了ROBBC包和RMySQL包的安装及使用;后介绍了网络数据爬虫技术,包括利用XML爬取网络表格数据、利用RCurl包批量下载ftp文件等方法。本课程配套课件和脚本均可下载,方便学员跟着视频自己动手操作。

    4577 人正在学习 去看看 谢佳标

时间匆匆,我也毕业开始工作有两个月的时间了。由于工作关系开始研究安卓源码相关的内容。刚开始准备采取单独编译某个系统app,然后替换对应system分区priv-app中的内容,而不用重复烧录的方法。但是经过试验这种方法没有行得通。不知道哪位大神有没有避免重复烧录的方法,路过此贴,还望留言告知。
源码的代码量比较大,阅读代码是个很痛苦的事情,尤其是源码这么复杂的东西。可以使用android studio打开单个的app然后慢慢啃,但是源码中通常会有多个app编译成一个app比如电话这部分就包括Dialer,contact,telephony等几个部分编译而成,通常需要阅读这几个部分,如果用android studio打开多个项目,这样一般电脑估计就会有点小卡,这是绝对不能忍的。所以经过一番探索,发现了导入整个安卓项目的方法,介绍如下:

一、源码导入studio

安卓源码本身带有能够生成android studio的配置文件的编译项,只需执行如下几步便可以轻松将整个源码项目导入android studio了

  1. 源码编译一次,生成out目录下的完整目录

  2. 在源码根目录下执行 mmm development/tools/idegen/

  3. 执行 ./development/tools/idegen/idegen.sh

  4. 可以修改development/tools/idegen/下的android.iml文件,根据自己的需要选择一些需要导入的文件,配置如下:`

    <SourceFolder url=""/>  //里面的内容为要导入的内容
    <excludeFolder url=""/> //排除在外的内容
    //还可以使用一些通配规则来过滤一些内容
  1. 使用android studio打开根目录下的android.ipr文件,等待一会就可以完成导入了

二、源码调试

1、配置SDK和JDK
2、修改依赖
3、添加framework

2016-12-12 20:05:24 shichen501 阅读数 3852
  • R语言从入门到精通系列之数据导入实战视频课程

    本篇首先介绍了如何将txt、csv、非机构花文本文件数据导入到R语言中,并介绍了四种导入excel数据的方法,在介绍R与MySQL数据库管理中,详细介绍了ROBBC包和RMySQL包的安装及使用;后介绍了网络数据爬虫技术,包括利用XML爬取网络表格数据、利用RCurl包批量下载ftp文件等方法。本课程配套课件和脚本均可下载,方便学员跟着视频自己动手操作。

    4577 人正在学习 去看看 谢佳标

摘要:最先尝试的方法是从eclipse导出项目时选择Generate Gradle build files,然后在Android Studio导入,需要更新gradle的版本,保留了原始的目录结构,后来在更新gradle时遇到了很多问题,也记不清了,后来使用的是直接将项目导入到Android Studio,由Android Studio来重新构造目录结构.1

导入

Import

  • 选择工程在的路径,然后finish,等待Android Studio构造项目
    导入工程

简单介绍一下import summary

在导入工程后,会在第一时间出现import summary

Ignored Files(最重要的部分)


Android Studio会在这一步忽略掉不属于Android标准目录的文件,比如用户自定义文件夹,混淆文件,所以必须要检查一下是否有重要文件在这一步被Android Studio忽略掉

Replaced Jars with Dependencies


在Android Studio中你可以添加在线的jar或者库,所以常见的android-support-v4.jar兼容包都会转化com.android.support:support-v4:19.1.0,当然由于兼容包多样化,在这一步转换可能会遇到一些问题,以后会提到

Moved Files


  • 将so文件移动到app/src/main/jniLibs目录下,Android Studio默认会识别这个目录
  • 将lib目录下的jar移动到app/libs/下
  • 将项目中引用的其他资源例如html都移动到app/src/main/resources/

Next Steps和Bugs略过

常见问题

9-patch

在Android Studio对9-patch的检查非常严格,不允许存在bad patches,也不允许不是9-patch的图片命名为9.png


错误日志

9-patch image /Users/liuende/Documents/test/app/src/main/res/drawable-mdpi/btn_style_zero_presse.9.png malformed.
AAPT:        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT:        Found at pixel #6 along top edge.

解决方案

  • 关闭Android Studio对png图片合法性的检查,在app/build.gradle中的android后的大括号中添加下述代码,然后sync now,rebuild
    aaptOptions{
        cruncherEnabled=false
        useNewCruncher=false
    }
  • 如果仍然存在报错,对报错的图片重命名,例如test.9.png重命名为test.png

文件含有BOM

错误日志

Error:(1, 1) 错误: 非法字符: '\ufeff'

错误原因

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符,即BOM,但是在很多代码中不会忽略,导致错误

简单介绍一下BOM

注:Java在读取Unicode文件的时候,会统一把BOM变成“\uFEFF”.2

  BOM —— Byte Order Mark,中文名译作“字节顺序标记”。
  UTF-8 不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式,其中字符 “Zero Width No-Break Space” 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。
  对于UTF-16或者更高,字符U+FEFF如果出现在字节流的开头,则用来标识该字节流的字节序,是高位在前还是低位在前。

解决方案

* Eclipse可以自动把UTF-8+BOM文件转为普通的UTF-8文件,但AndroidStudio需要手动修改*

方法一

利用Android Studio将文件编码改为GBK,再转为UTF-8即可以解决,操作位置在Android Studio右下角

  • 选择编码
  • 点击convert
    这里写图片描述
  • 再重复执行1和2,转化为UTF-8

方法二

利用Android Studio自带的终端打开问题文件,然后使用vim打开文件,在命令模式下set nobomb

文件编码不正确

错误日志

Error:(6, 4) 错误: 编码UTF-8的不可映射字符

错误原因

文件原先是使用GBK或者其他非UTF-8的编码格式,在导入Android Studio时以UTF-8编码格式加载所以产生乱码

解决方案

先将文件以GBK的格式加载,再转化为utf-8

  • 选择文件原先的编码

  • 点击Reload
    这里写图片描述

  • 在通过第一步选择utf-8,点击convert,转化文件编码格式为utf-8

包引用出现问题

jre中的rt.jar没有被引用到项目中国

错误日志

Error:(44, 28) 错误: 程序包javax.imageio.stream不存在

错误说明

目录jre下的jar包并不会默认引用到项目中

解决方法

注:compile 意味着你需要编译和运行应用程序的JAR。对于一个web应用程序,例如,JAR将被放置在web - inf / lib目录中。provided意味着你需要为编译JAR提供,但在运行时环境已经提供,对于一个web应用程序,这意味着JAR文件将不会被放置到web - inf / lib目录中

  • 在app/gradle.build下dependencies中添加下述配置
 provided files('/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/rt.jar')

打包apk时报错

错误日志

注:Android Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题

Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

错误说明

Android Studio在打包成release版时,默认会对代码进行扫描和检查,发现潜在的代码,而由于eclipse和Android Studio的代码检查不同,导致很多在eclipse警告的代码,在打包时直接报错

解决方案

  • 在app/gradle.build中添加下述配置
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }

build时内存不够

永久解决办法

  • 新建文件~/.gradle/gradle.properties
org.gradle.jvmargs=-Xmx1536M
org.gradle.daemon=true
org.gradle.parallel=true                    
2019-06-04 16:19:32 weixin_38599651 阅读数 36
  • R语言从入门到精通系列之数据导入实战视频课程

    本篇首先介绍了如何将txt、csv、非机构花文本文件数据导入到R语言中,并介绍了四种导入excel数据的方法,在介绍R与MySQL数据库管理中,详细介绍了ROBBC包和RMySQL包的安装及使用;后介绍了网络数据爬虫技术,包括利用XML爬取网络表格数据、利用RCurl包批量下载ftp文件等方法。本课程配套课件和脚本均可下载,方便学员跟着视频自己动手操作。

    4577 人正在学习 去看看 谢佳标

下载了老师的android项目放到自己的工作环境中,导入之后发现了一堆import错误,后面才发现是自己导入的时候根本不是按android项目导入,导致导入的项目没有每识别为Android项目

解决:

1、重新导入,导入时选择android

2、将导入的项目转换为android项目

右击项目?configure?convert to...

 

接着,import项目没有问题了,整个项目包也没有报错了,但是run的时候就是启动不了

 解决:

设置项目的sdk成低版本

android studio 导入android AOSP源码

博文 来自: cpwolaichile
没有更多推荐了,返回首页