Я не думаю, что вы можете - для получения аудио или видео есть W3C draft API , но на какой-либо из основных мобильных ОС еще нет реализации.
Второй вариант Единственный вариант - пойти с предложением Денниса использовать PhoneGap. Это означает, что вам нужно создать родное приложение и добавить его в магазин мобильных приложений / на рынке.
Вам нужно поочередно опробовать элементы из PriorityQueue
. toString
этого не делает.
Итак, вместо вашего System.out.println(queue);
сделайте это:
while(!queue.isEmpty()) {
System.out.println(queue.poll());
}
Причина в том, что PriorityQueue
никогда полностью не сортируется внутри, посмотрите, как куча работает для более подробной информации. Вывод элементов из него фиксирует кучу во время вызовов, поэтому он должен выводить элементы в отсортированном порядке.
Вы хотите, чтобы более низкая частота повышалась так:
public int compare(TreeNodeHuffman p1, TreeNodeHuffman p2) {
if (p1.frequency < p2.frequency) return 1;
if (p1.frequency > p2.frequency) return -1;
return 0;
}
}
Если вы хотите протестировать ее, отправьте ее в один пул с потоком и посмотрите порядок обрабатываемых заданий вместо строки или итератора , как говорит doc в http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html#iterator%28%29 :
Возвращает итератор по элементам в этой очереди. Итератор не возвращает элементы в каком-либо конкретном порядке.
Можно увидеть http://docs.oracle.com/javase/7/docs/api/java/util/ concurrent / Executors.html # newSingleThreadExecutor% 28% 29 для быстрого однопоточного пула, чтобы проверить это.
System.out.println(queue)
печатает очередь без сортировки. Если вы хотите напечатать реальный порядок очереди, следуйте приведенному ниже коду, который использует опрос, чтобы получить элементы из очереди сверху вниз:
TreeNodeHuffman tn = null;
do{
tn = queue.poll();
if(tn!=null){
System.out.print(tn.key+",");
}
}while(tn != null);
, и вы увидите этот результат как ожидалось:
z, q, x, j, k, v, b, p, y, g, f, w, m, u, c, l, d, r, h, s, a, i, o, a, t, e,
blockquote>