我在Android(Jelly Bean)中使用媒体编解码器类将PCM格式编码为AAC.该文件已编码,但没有音乐播放器能够播放该文件.我无法在网上找到任何工作代码或适当的文档.
这是我的代码:
public void doConvert()
{
new AsyncTask<Void, Void, Void>()
{
@Override
protected Void doInBackground(Void... params)
{
try
{
int codecCount = MediaCodecList.getCodecCount();
for ( int i=0; i < codecCount; i++)
{
MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);
Logger.getLogger(MainActivity.class.getSimpleName()).log(Level.INFO, info.getName());
for ( String type : info.getSupportedTypes() )
{
Logger.getLogger(MainActivity.class.getSimpleName()).log(Level.INFO, type);
}
}
File inputFile = new File( Environment.getExternalStorageDirectory().getAbsolutePath()+"/Download/Ghajini27_Mono_8Khz.wav");
//File inputFile = new File( sampleFD.get);
Log.e("File", String.valueOf(inputFile.length()));
FileInputStream fis = new FileInputStream(inputFile);
fis.skip(44);//remove wav header
File outputFile = new File( Environment.getExternalStorageDirectory().getAbsolutePath()+"/Download/out.m4a");
if …Run Code Online (Sandbox Code Playgroud) 读的Javadoc的@Override注释,我遇到了以下规则:
如果使用此批注类型对方法进行批注,则编译器需要生成错误消息,除非至少满足下列条件之一:
- 该方法会覆盖或实现在超类型中声明的方法.
- 该方法的签名覆盖等效于Object中声明的任何公共方法.
我对第一点很清楚,但我不确定第二点.
"覆盖等价"是什么意思?Object在这方面,公共方法有何特别之处?为什么这不属于第一个标准?
更新说明:这仅适用于Java 7文档.在Java 6的文档不说的覆盖等价什么.为什么要改变?
在咨询了JLS(第8.4.2节)之后,我发现了以下对覆盖等价的解释:
的方法的签名
m1是一个子签名的方法的签名m2,如果任一:
m2具有相同的签名m1,或- 签名与签名
m1的擦除(§4.6)相同m2.两个方法签名
m1并且m2是覆盖等效的,如果它们m1是子签名m2或是m2其子签名m1.
据我所知,这回答了第一个问题("它是什么意思?")和第三个问题("为什么第一个条件不包括这个?").
如果我理解正确(如果我没有请通知我!),只有一种情况,两种方法是覆盖等价的,并且不属于原始问题的第一个条件.当子类方法的签名的擦除与超类方法的签名相同时,情况就是这种情况,而不是相反.
因此,当我们在尝试"覆盖"类的公共方法时尝试添加类型参数时,原始问题的第二个条件才会发挥作用Object.我尝试了以下简单示例来测试它,使用未使用的类型参数:
public class Foo {
@Override
public <T> boolean equals(Object obj) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这个类没有编译,因为该方法不实际 …
java overriding annotations language-design method-signature
我有以下drawable set作为背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/base_bg"
android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/decoration1"
android:gravity="top|right"
android:width="25dp"
android:height="25dp" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/decoration2"
android:gravity="top|right"
android:width="25dp"
android:height="25dp"
/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
它显示所有位图(base_bg,decoration1和decoration2),但我找不到修改它们大小的方法.我想拥有主要背景,并在其上面根据dpi具有不同尺寸的装饰.有没有一种简单的方法可以做到这一点,或者我真的必须为不同的dpi有一堆"装饰"?这不好,我想改为scale/resize选项!
在android:width和android:height属性的东西,我想了解,但我知道,这是行不通的.目前我正在为不同的DPI使用不同的版本,但希望它可以更加用户友好.
我正在使用fabric.js在画布上画一条线.这是我的代码,但我没有得到任何输出:
$("#Line").click(function() {
// alert("Line");
canvas.add(new fabric.Line([50, 100, 200, 200], {
left: 170,
top: 150,
fill: 'red'
}));
});
Run Code Online (Sandbox Code Playgroud) 我在表单上有大约10个文本框,实际上用于显示而不是输入.它们被命名为txt_001_Name,txt_002_Title等等.为此使用了什么样的循环.
我应该使用什么样的VBA来实际循环文本框的名称?所以,如果我是debug.print,它看起来像:
txt_001_Title
txt_002_Title
txt_003_Title
Run Code Online (Sandbox Code Playgroud)
这可能很简单 - 我应该学习的原因更多!
编辑:对不起,我应该对此更具描述性.
由于上面的命名约定,我希望迭代这些文本框,以便我可以执行每个文本框.这10个文本框中实际表示的是数值,每个文本框在onload事件中都有一个SQL语句.我还有另一组十个包含更静态的数值,最后另一个十个使用表达式简单地将前十个中的每一个除以相对的"第二"十,并且该值最终在相对中所以基本上它看起来像仪表板.
'first ten' 'second ten' 'resulting ten'
---------------------------------------------------
txt_001_value txt_001_calc txt_001_result
txt_002_value txt_002_calc txt_002_result
Run Code Online (Sandbox Code Playgroud)
等等
所以我实际上想将它用于'结果'文本框.我想循环前十,并执行这个简单的计算:
me.txt_001_result = me.txt_001_value / me.txt_001_calc
Run Code Online (Sandbox Code Playgroud)
所有的命名约定"匹配",所以我可以为此手动输入上面的10行,但我确信有更好的方法(循环这个),我应该学习它.
我想在我自己的类中调用抽象类的方法.抽象类是:
public abstract class Call {
public Connection getEarliestConnection() {
Connection earliest = null;
...
return earliest;
}
}
Run Code Online (Sandbox Code Playgroud)
我想调用上面的方法,调用类是:
public class MyActivity extends Activity {
Connection c = new Connection();
private void getCallFailedString(Call cal)
{
c = cal.getEarliestConnection();
if (c == null) {
System.out.println("** no connection**");
} else {
System.out.println("** connection");
}
}
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试运行上面的类时,它就会在行上抛出NullPointerException c = cal.getEarliestConnection().谁能告诉我如何解决这个问题?
由于许多原因,在servlet中使用线程并不是一个好习惯.
java.util.Timer好像是一个线程的包装器.那么,使用它也不安全吗?如果是这样,在servlet中安排任务的最安全的方法是什么?
我只是学习Java,但我的问题是Java相关和一般.
我的情况是这样的:我有一个方法,我想通过继承通常由几个类使用.在方法块中,我需要声明一个调用类的变量,从中创建对象,这些对象位于调用类的ArrayList <>("array")中,并通过ObjectOutputStream("output")发送输出到序列化文件.
我有以下课程:
CustomerInternalFrame.java,它使用Customer类型的ArrayList维护序列化Customer.java的"数组".
ContractorInternalFrame.java,它使用类型为Contractor的ArrayList维护序列化Contractor.java的"数组".
VendorInternalFrame.java,它使用Vendor类型的ArrayList维护序列化Vendor.java的"数组".
在每个这些InternalFrame类中,我有以下方法addRecords(将"Customer"替换为相应的类,Customer,Contractor或Vendor):
private void addRecords() {
// object to be written to the file
Customer record;
// loop until end of array
for (Customer element : array) {
// check for closed streamer and invalid entries
try {
// create a new object from current fields
record = new Customer(
element.getName(),
element.getLastName(),
element.getAddress1(),
element.getAddress2(),
element.getCity(),
element.getState(),
element.getZip(),
element.getPhone(),
element.getCell());
// write new record
output.writeObject(record);
} // end try
... (catch blocks)
} // end …Run Code Online (Sandbox Code Playgroud) 所以我创建了一个简单的程序,要求用户输入5种类型,然后从10中得分.我没有添加任何验证,但我并不担心.如您所见,我有两个数组:genres[]和score[].让我们说他们进入:
[1] : Genre A | 3
[2] : Genre B | 6
[3] : Genre C | 2
[4] : Genre D | 10
[5] : Genre E | 8
Run Code Online (Sandbox Code Playgroud)
结果应列出流派D,E,B,A,C
这是我的整体代码:
import java.util.Scanner;
class OrigClass {
public static void main (String[] args){
Scanner ScanObj = new Scanner(System.in);
int count;
String[] genres;
genres = new String[5];
int[] score;
score = new int[5];
for (count = 0; count < 5;count++){
System.out.println("Enter A Genre: ");
genres[count] = …Run Code Online (Sandbox Code Playgroud) 为什么这个班不编译?
import java.util.*;
public class Caesar
{
public static void main(String [] args)
{
final boolean DEBUG = false;
System.out.println("Welcome to the Caesar Cypher");
System.out.println("----------------------------");
Scanner keyboard = new Scanner (System.in);
System.out.print("Enter a String : ");
String plainText = keyboard.nextLine();
System.out.print("Enter an offset: ");
int offset = keyboard.nextInt();
String cipherText = "";
for(int i=0;i<plainText.length();i++)
{
int chVal = plainText.charAt(i);
if (DEBUG) {int debugchVal = chVal;}
chVal +=offset;
if (DEBUG) {System.out.print(chVal + "\t");}
while (chVal <32 || chVal > 127)
{ …Run Code Online (Sandbox Code Playgroud) java ×6
android ×2
aac ×1
access-vba ×1
annotations ×1
arrays ×1
background ×1
bitmap ×1
class ×1
fabricjs ×1
html5-canvas ×1
jquery ×1
layer-list ×1
loops ×1
ms-access ×1
overriding ×1
pcm ×1
scheduling ×1
servlets ×1
sorting ×1
timer ×1
variables ×1
vba ×1