當前位置:首頁 » 操作系統 » 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之間的差異,效果如下。

熱點內容
javaexcel數據導入資料庫中 發布:2025-03-21 21:30:00 瀏覽:120
小嶽嶽訪問 發布:2025-03-21 21:15:41 瀏覽:93
sql代碼格式化 發布:2025-03-21 21:14:52 瀏覽:629
c語言實現數據結構的演算法 發布:2025-03-21 14:35:55 瀏覽:414
androidphp最佳實踐pdf 發布:2025-03-21 14:33:44 瀏覽:728
哪裡下安卓版60秒 發布:2025-03-21 14:32:06 瀏覽:291
javarsa分段加密 發布:2025-03-21 14:31:57 瀏覽:511
中國式家長怎麼換伺服器 發布:2025-03-21 14:21:58 瀏覽:847
腳本守約 發布:2025-03-21 14:20:55 瀏覽:102
安卓手機清理存儲空間會怎麼樣 發布:2025-03-21 14:20:17 瀏覽:26