当前位置:首页 » 操作系统 » FW直播源码

FW直播源码

发布时间: 2023-06-19 05:17:27

❶ 直播声卡哪个牌子好求推荐

好的直播声卡牌子有:

1、雅马哈

雅马哈是众所周知的知名品牌,AG03是雅马哈为数不多的可用于手机直播的外置声卡,可以实现最高的声音还原,其品质在本文所提及的所有品牌中无一可与之媲美。

4、创新

创新的这款产品在同价位来说表现不错,在业界也有一定名气。这款产品没有笑声,鼓掌之类的氛围特效,对于喜欢这类氛围特效的人来说不太合适。

❷ 求一个java实现自动下载的源代码

您好,这样的:
/**
*
*/
package com.b510.base.bean.install;

import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* @author hongten([email protected])
* @date 2013-2-24
*/
@SuppressWarnings("unchecked")
public class BeanUtils {

//公共部分
private static final String RT_1 = "\r\n";
private static final String RT_2 = RT_1+RT_1;
private static final String BLANK_1 =" ";
private static final String BLANK_4 =" ";
private static final String BLANK_8 =BLANK_4 + BLANK_4;

//注释部分
private static final String ANNOTATION_AUTHOR_PARAMTER = "@author ";
private static final String ANNOTATION_AUTHOR_NAME = "hongten([email protected])";
private static final String ANNOTATION_AUTHOR = ANNOTATION_AUTHOR_PARAMTER + ANNOTATION_AUTHOR_NAME;
private static final String ANNOTATION_DATE = "@date ";
private static final String ANNOTATION = "/**"+RT_1+BLANK_1+"*"+BLANK_1+ANNOTATION_AUTHOR +RT_1+BLANK_1+"*"+BLANK_1+ANNOTATION_DATE +getDate()+RT_1+BLANK_1+"*/"+RT_1;

//文件 地址
//private static final String BEAN_PATH = "com/b510/base/bean";
private static final String DAO_PATH = "com/b510/base/";
private static final String DAO_IMPL_PATH = "com/b510/base//impl";
private static final String SERVICE_PATH = "com/b510/base/service";
private static final String SERVICE_IMPL_PATH = "com/b510/base/service/impl";

//包名
private static final String BEAN_URL = "com.b510.base.bean";
private static final String DAO_URL = "com.b510.base.";
private static final String DAO_IMPL_URL = "com.b510.base..impl";
private static final String SERVICE_URL = "com.b510.base.service";
private static final String SERVICE_IMPL_URL = "com.b510.base.service.impl";

//基本类名称
private static final String BASE_DAO_NAME = DAO_URL + ".BaseDao";
private static final String ABSTRACT_BASE_DAO_IMPL_NAME = DAO_IMPL_URL + ".AbstractBaseDaoImpl";
private static final String BASE_SERVICE_NAME = SERVICE_URL + ".BaseService";
private static final String ABSTRACT_BASE_SERVICE_IMPL_NAME = SERVICE_IMPL_URL + ".AbstractBaseServiceImpl";

/**
* 创建bean的Dao<br>
*
* @param c
* @throws Exception
*/
public void createBeanDao(Class c) throws Exception {
String cName = c.getName();
String fileName = System.getProperty("user.dir") + "/src/" + DAO_PATH
+ "/" + getLastChar(cName) + "Dao.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write("package "+DAO_URL+";"+RT_2+ANNOTATION+"public interface " +
getLastChar(cName) + "Dao extends "+BASE_DAO_NAME+" <" + cName + "> {"+RT_2+"}");
fw.flush();
fw.close();
showInfo(fileName);
}

/**
* 创建bean的Dao的实现类
* @param c
* @throws Exception
*/
public void createBeanDaoImpl(Class c) throws Exception{
String cName = c.getName();
String fileName = System.getProperty("user.dir") + "/src/" + DAO_IMPL_PATH
+ "/" + getLastChar(cName) + "DaoImpl.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write("package "+DAO_IMPL_URL+";"+RT_2+ANNOTATION+"public class " +
getLastChar(cName) + "DaoImpl extends "+ABSTRACT_BASE_DAO_IMPL_NAME+"<" +
cName + "> implements "+DAO_URL+"."+getLastChar(cName)+"Dao{"+RT_2+"}");
fw.flush();
fw.close();
showInfo(fileName);
}

/**
* 创建bean的service
* @param c
* @throws Exception
*/
public void createBeanService(Class c) throws Exception{
String cName = c.getName();
String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_PATH
+ "/" + getLastChar(cName) + "Service.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write("package "+SERVICE_URL+";"+RT_2+ANNOTATION+"public interface " +
getLastChar(cName) + "Service extends "+BASE_SERVICE_NAME+"<"+ cName +">{"+RT_2+"}");
fw.flush();
fw.close();
showInfo(fileName);
}

/**
* 创建bean的service的实现类
* @param c
* @throws Exception
*/
public void createBeanServiceImpl(Class c) throws Exception{
String cName = c.getName();
String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_IMPL_PATH
+ "/" +getLastChar(cName)+"ServiceImpl.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write("package "+SERVICE_IMPL_URL+";"+RT_2+ANNOTATION+"public class "
+ getLastChar(cName) + "ServiceImpl extends "+ABSTRACT_BASE_SERVICE_IMPL_NAME+"<"+ cName
+ "> implements "+SERVICE_URL+"."+getLastChar(cName)+"Service{"+RT_2+BLANK_4
+"private "+DAO_URL+"."+getLastChar(cName)+"Dao "+getLowercaseChar(getLastChar(cName))
+"Dao;"+RT_2+BLANK_4+"public void set"+getLastChar(cName)+"Dao("+DAO_URL+"."+getLastChar(cName)+"Dao "
+getLowercaseChar(getLastChar(cName))+"Dao){"+RT_1+BLANK_8+"this."+getLowercaseChar(getLastChar(cName))+"Dao = "
+getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+BLANK_4+"@Override"+RT_1+BLANK_4
+"public "+DAO_URL+"."+"BaseDao<"+BEAN_URL+"."+getLastChar(cName)+"> getBaseDao(){"+RT_1+BLANK_8
+"return "+getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+"}");
fw.flush();
fw.close();
showInfo(fileName);
}

/**
* 获取路径的最后面字符串<br>
* 如:<br>
* <code>str = "com.b510.base.bean.User"</code><br>
* <code> return "User";<code>
* @param str
* @return
*/
public String getLastChar(String str) {
if ((str != null) && (str.length() > 0)) {
int dot = str.lastIndexOf('.');
if ((dot > -1) && (dot < (str.length() - 1))) {
return str.substring(dot + 1);
}
}
return str;
}

/**
* 把第一个字母变为小写<br>
* 如:<br>
* <code>str = "UserDao";</code><br>
* <code>return "userDao";</code>
* @param str
* @return
*/
public String getLowercaseChar(String str){
return str.substring(0,1).toLowerCase()+str.substring(1);
}

/**
* 显示信息
* @param info
*/
public void showInfo(String info){
System.out.println("创建文件:"+ info+ "成功!");
}

/**
* 获取系统时间
* @return
*/
public static String getDate(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(new Date());
}
}

❸ 如何在不影响原有aapt源码的情况下编译定制版aapt

正常情况下,编译aapt时我们使用的命令是
make aapt11

改造后,我们希望该命令可以编译出官方的aapt,然后通过另一个命令编译出定制版的aapt,这里让其命名为vaapt,当然这个前缀随意,你喜欢就好。最终编译的命令就是
make vaapt11

命令有了,模块在哪里呢?很简单,直接在aapt同级目录下拷贝一个aapt,重名名为vaapt。最终目录结构如图所示

我们还需要修改makefile文件,让其编译出vaapt,依赖的内容也是vaapt,makefile原内容为:
# ==========================================================
# Build the host static library: libaapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_CFLAGS_darwin := -D_DARWIN_UNLIMITED_STREAMS
LOCAL_SRC_FILES := $(aaptSources)
LOCAL_STATIC_LIBRARIES := $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_STATIC_LIBRARY)

# ==========================================================
# Build the host executable: aapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := aapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptMain)
LOCAL_STATIC_LIBRARIES := libaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_EXECUTABLE)

# ==========================================================
# Build the host tests: libaapt_tests
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libaapt_tests
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptTests)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := libaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_NATIVE_TEST)

可以看到LOCAL_MODULE的值都是aapt相关的,比如static library对应的值是libaapt,host
executable对应的值是aapt,host
tests对应的值是libaapt_tests,还有LOCAL_STATIC_LIBRARIES的值也是依赖static
library,其值为libaapt,我们需要将这几个值修改为vaapt相关的,即在原来的值aapt前面加个v,对应修改为libvaapt、vaapt、libvaapt_tests、libvaapt。修改后的内容如下:

# ==========================================================
# Build the host static library: libaapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libvaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_CFLAGS_darwin := -D_DARWIN_UNLIMITED_STREAMS
LOCAL_SRC_FILES := $(aaptSources)
LOCAL_STATIC_LIBRARIES := $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_STATIC_LIBRARY)

# ==========================================================
# Build the host executable: aapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := vaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptMain)
LOCAL_STATIC_LIBRARIES := libvaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_EXECUTABLE)

# ==========================================================
# Build the host tests: libaapt_tests
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libvaapt_tests
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptTests)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := libvaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_NATIVE_TEST)

这时候执行编译命令make
vaapt,完全可以编译出一个vaapt命名的可执行文件。但是事情还没有完,aapt的源码依赖了androidfw下的部分源码,而恰恰这部分源码也可能需要修改,因此我们也需要做同样的事,在同目录下复制一份androidfw为vandroidfw。这个文件夹有两份,一份是头文件,一份是cpp文件,对应在不同的目录。首先来看头文件的目录,在include下

然后是实现的cpp的目录,在libs下

同样的需要修改makefile文件,原文件内容是
# For the host
# =====================================================
include $(CLEAR_VARS)

LOCAL_MODULE:= libandroidfw
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
LOCAL_SRC_FILES:= $(hostSources)
LOCAL_C_INCLUDES := external/zlib

include $(BUILD_HOST_STATIC_LIBRARY)

# For the device
# =====================================================

include $(CLEAR_VARS)

LOCAL_MODULE:= libandroidfw
LOCAL_SRC_FILES:= $(deviceSources)
LOCAL_C_INCLUDES := \
system/core/include
LOCAL_STATIC_LIBRARIES := libziparchive libbase
LOCAL_SHARED_LIBRARIES := \
libbinder \
liblog \
libcutils \
libgui \
libutils \
libz

需要将LOCAL_MODULE的值从libandroidfw修改为libvandroidfw。

这时候其实还是有问题的,因为文件里的头文件的引用还是androidfw的,会报找不到的错误,因此需要将include/vandroidfw和libs/vandroidfw下的文件内容中头文件的include部分的代码和androidfw相关的都改成vandroidfw。就像这样

这是一个相对痛苦且繁琐的步骤,只要耐住性子改了就可以了,不要遗漏即可。

然后回到vaapt的makefile文件。将对androidfw的引用改成vandroidfw,原内容为
aaptHostStaticLibs := \
libandroidfw \
libpng \
liblog \
libutils \
libcutils \
libexpat \
libziparchive-host \
libbase

修改后的内容为
aaptHostStaticLibs := \
libvandroidfw \
libpng \
liblog \
libutils \
libcutils \
libexpat \
libziparchive-host \
libbase

至此,就完成了一个自定义的aapt的模块的新建和修改,之后只需要修改vaapt下的源码以及vandroidfw下的源码,即可得到自定义的aapt,而不改变原有aapt的源码内容。如果需要编译官方的aapt,只需要用make aapt编译,编译我们自定义的aapt,则使用make vaapt编译,做到了一定的隔离,互不影响。当然如果你乐意,完全可以对vaapt和vandroidfw目录使用git进行版本控制,这样也就能看到我们历史修改了什么内容。

最后推荐一个可以用于差异比较的软件Beyond Compare,跨平台的,windows,mac,linux都有,当然这是一个收费软件。。。所以你懂的。可以用它比较两个目录的aapt之间的差异,效果如下。

热点内容
python3range 发布:2025-03-21 23:42:56 浏览:346
安卓国外手机在哪个平台买 发布:2025-03-21 23:39:40 浏览:116
androidx86卡 发布:2025-03-21 23:38:06 浏览:802
linux限制访问目录权限 发布:2025-03-21 23:35:19 浏览:414
海泰克如何使用密码 发布:2025-03-21 23:35:17 浏览:640
php连接加密 发布:2025-03-21 23:18:55 浏览:833
ftp上传和下载命令 发布:2025-03-21 22:59:45 浏览:85
压缩包如何在电脑解压 发布:2025-03-21 22:47:06 浏览:95
java气候 发布:2025-03-21 22:37:19 浏览:143
外文期刊数据库检索 发布:2025-03-21 22:37:05 浏览:10