- 1 名前:デフォルトの名無しさん [2013/02/22(金) 15:54:25.74 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド ★★Java質問・相談スレッド159★★ toro.2ch.net/test/read.cgi/tech/1358921135/
- 374 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 00:59:49.34 ]
- キー入力のフラグをenumでうまくかけないかな?
いっつも一つずつ private boolean keyLeft; みたいな感じで定義してるのだけども、これをうまくまとめて書きたい いくつ必要かわからないことを考えるとArrayList<Boolean>にするのがいいのかな? だけどArrayList<Boolean>しようがboolean[]にしようがインデックスはint型なんですよね だから今までprivate static final int LEFT = 0;のようにint型でインデックスを定数化?する書き方が主流だったが それじゃダメだっつうんでenumが出てきた? public enum KeyType { LEFT, ....., ESCAPE } みたいなenumを配列やリストのint型のインデックスにうまく対応させる方法があれば教えてほしい イメージとしては private ArrayList<Boolean> keyFlag = new ArrayList<Boolean>(); if(!keyFlag.get(ここでenumのKeyTypeをうまく利用したい)) .... とか private boolean[] keyFlag = new boolean[2]; if(!keyFlag[ここでenumのKeyTypeをうまく利用したい]) ... みたいな感じ 今思いついたけどさすがにこれはなしか? private HashMap<KeyType, Boolean> keyFlag = new HashMap<KeyType, Boolean>(); if(....) keyFlag.put(KeyType.LEFT, false); if(!keyFlag.get(KeyType.LEFT).... いやありか!?
- 375 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:04:47.68 ]
- あれ、もしかするとそれをしちゃうとenumでせっかく安全にした部分が崩れちゃうのか・・・?
- 376 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:11:05.35 ]
- あれもしかしてenum内にセッターゲッター作るが普通?
public enum KeyType { LEFT(false), ,,,,, ,ESCAPE(false); private boolean value; private KeyType(boolean value) { this.value = value; } public void setValue(boolean value) { this.value = value; } public boolean getValue() { return value; } }
- 377 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:36:12.76 ]
- 7ステップで理解するJavaでの列挙型/enum使用法 (1/3) - @IT
ttp://www.atmarkit.co.jp/fjava/rensai4/java5eclipse21/java5eclipse21_1.html
- 378 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:38:02.51 ]
- >>376
Enumに可変成分を持たせるのは厳禁。 EnumMapを使いなさい。
- 379 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:51:21.08 ]
- >>377の例だとキー入力にEnumSet使ってるな
- 380 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 01:54:58.37 ]
- enummapなんてもんがあったのね
やるじゃん
- 381 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:13:25.06 ]
- >Enumに可変成分を持たせるのは厳禁。
これって本当そうなの? じゃあenumのコンストラクタ作ったりメソッド作ったりできないじゃん
- 382 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:37:29.27 ]
- Enumって定数でそ
- 383 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:40:01.91 ]
- 独自アノテーションとか使い道がサッパリ分からんわ
Deprecated Override SuppressWarnings この3つありゃ十分じゃね
- 384 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:42:10.47 ]
- >>382
???
- 385 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:43:34.79 ]
- Enumって定数のように扱うもんでそ
- 386 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 02:51:02.71 ]
- Java覚えた書籍がEnumやアノテーションやジェネリクス入る前のバージョンのだったから
未だにそれらの使い方が分からんw
- 387 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 03:37:59.84 ]
- 定数のように扱うって言うのは列挙する部分の話でしょ?
enumに可変成分持たせることの何がいけないのさ。 そもそも定数のように扱うために出てきた機能じゃないと思うのだが
- 388 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 03:49:20.55 ]
- >>387
そもそももたせられない
- 389 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 03:51:40.51 ]
- >>388
???????
- 390 名前:デフォルトの名無しさん [2013/03/08(金) 04:35:40.90 ]
- みんな Effective Java の enum の章を読め。
話はそれからだ。
- 391 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 04:39:20.56 ]
- Java7で増えた新しいクラスとか全く使い方が分からんのだが
- 392 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 06:33:58.12 ]
- ここまで住民の知識レベルを問う流れでした
- 393 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 06:46:13.46 ]
- >>360
ありがとう。 すんげ〜 ただ、どえれー遅くなりそうだね。 何度も頻繁に繰り返すには不向きっぽい。 自分で言っているのもなんだが( パフォーマンスならディープを選ばないだろと言う意味 ) 頻繁に繰り返し呼ばれる配列で 配列の種類も甲乙丙・・・10種類くらいある。 パフォーマンスは必須だが、それより重要視される要件として 他クラスからの変更は許可せず、値だけを見せる必要がある。 ディープコピーが正解かと思ったんだが、違うのかな?
- 394 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 06:50:17.79 ]
- public class Human
{ public enum Status { HP(120), MP(60), STR(30); private int value; private Status(int value) { this.value = value; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } } } みたいなのダメなの?そんなわけないよね。これがダメならただ列挙するだけの仕組みでしかないじゃん。
- 395 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 07:16:29.65 ]
- 名前が列挙なのにそんなこと言われてもな。
イミュータブルとかスレッドセーフとかデシリアライズとか諸々。 setがなくてvalueがfinalならよいよ。
- 396 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 07:30:32.64 ]
- >>381 >>384
それがわかってないということはまだJava慣れしていない証拠 「不変クラス」やSingletonパターンでぐぐってみればすぐにわかるだろう Interger.valueOf()でIntegerオブジェクトを生成できる理由を考えて見ればわかるんじゃないかと それから、バイブルともいえるEffective Javaでも読めばわかるかな
- 397 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 08:01:03.72 ]
- ラッパークラスがどうのこうのってこと?
- 398 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 08:05:38.37 ]
- >>395
意地悪で聞くけどConcurrentMapやSemaphoreのようなスレッドセーフな共有変数 置き場に使うのは何故ダメかな。 public enum WC{ Men(5), Women(3); public final Semaphore place; private WC(int numPlace){this.place = new Semaphore(numPlace);} } switch(wc){ case WC.Men: wc.acquire(); いたす; flush(); wc.release(); break; case WC.Women; wc.acquire(); ドア開ける; ...
- 399 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 08:20:40.57 ]
- >>398
395に書いたことを君が検証すればいい。 俺に検証させるな。
- 400 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 08:23:22.84 ]
- 仲直りのちゅうしなさい
- 401 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 08:29:11.00 ]
- >>399
イミュータブルではないけれどもスレットセーフでシリアライザブルかつシングルトンだよ?
- 402 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 09:36:04.52 ]
- Java Magazine日本語版を読んでみたが、関係者の記念写真ばかりでワロタ
写真集かこれは!?
- 403 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 09:53:21.55 ]
- 使っていて言語的にも祭り上げられてる感はひしひしと感じる
- 404 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 10:01:47.90 ]
- >>398
Javaのアクセス制御(publicやprivateなど)がザルであることから、プログラムが大規模になるほど"共有したい範囲=アクセスできる範囲"を維持し難いため。 398の例なら、悪意ある外部者がセマフォを独占する可能性がある。
- 405 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 10:03:00.90 ]
- ザルである実例をどうぞ。示せなければただのデマだね。
- 406 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 10:05:07.98 ]
- なんでもpublicにしとけ!っていう設計なんて一切考えないメモリ厨にはあれがザルに見えるんだろうなww
- 407 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 11:07:49.80 ]
- >>402
過去は美しい想い出だけ
- 408 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 11:35:20.37 ]
- Javaでcmdのコマンドを実行する方法があれば教えてください。
Cでいうsystem("cmd /c cls");みたいなことをしたいです。
- 409 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 11:49:37.59 ]
- ProcessBuilderでググれ
- 410 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 12:04:03.20 ]
- それが、
Runtime r = Runtime.getRuntime(); Process p = r.exec("cmd /c cls"); が効かないのです。 clsをfirefoxとかにすればちゃんとブラウザ開いてくれるのにclsが効かない
- 411 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 12:24:38.40 ]
- >>405
誤解しないで欲しいが、他言語も似たようなものだから、javaだけを貶めているつもりはない。 404に書いた以外の例を挙げるならOSGi。あれは外部からアクセスされたくないパッケージを設定できる。
- 412 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 12:38:49.84 ]
- >>410
ググってからにしてくれ。 ググってその書き方は無いだろ。
- 413 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 12:44:43.69 ]
- >>383
>>386 Spring3になってから アノテーション祭だよ。 コンテキストが定義だらけだった 昔みたいなことはなくなって scan定義のみでおわり あとは、クラスアノテーションで @Controller,@Service,@Repository メソッドアノテーションで、 @Transactional,@RequestMapping 参照は、@Autowired バリデーション関係も多数 もう、昔には戻れないな
- 414 名前:デフォルトの名無しさん [2013/03/08(金) 12:49:28.06 ]
- >>410
絶対パスとかじゃないの?
- 415 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 13:02:02.61 ]
- >>410
clsコマンド自体はちゃんと実行されてると思うよ。 clsコマンドは画面クリアのための制御コードを標準出力に出力してるんだけど、 Javaからコマンドを実行する場合、そのコマンドの標準出力は画面(正確には Javaプログラムの標準出力)には垂れ流されないので、いったん自分で受け取って、 System.outに出力する必要があるみたい。本当にJavaって糞だと思う。 >>414 clsはcmd.exeの内部コマンドだよ。
- 416 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 13:03:28.97 ]
- >>414
clsはcmd.exe組み込みだから。 たぶんexecしたら別端末になるんじゃないの? 適当書くけど。
- 417 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 13:04:13.23 ]
- めちゃかぶってるやん。仕事に戻るわ。。
- 418 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 15:42:37.96 ]
- これを使ってclsの代わりをさせるんだ!
「エスケープ・シーケンス」とは:ITpro itpro.nikkeibp.co.jp/word/page/10010338/
- 419 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 15:47:53.63 ]
- エスケープシーケンスについて
hp.vector.co.jp/authors/VA016670/escape_code.html
- 420 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 15:52:08.06 ]
- コマンドプロンプトでは、エスケープシーケンスはできないので、promptで対応する - gogoToRoTAN
gogotorotan.blogspot.jp/2012/10/prompt.html >WindowsXP, WindowsVista, Windows7 等、コマンドプロンプトになってからは、 >エスケープシーケンスが使えなくなってしまいました
- 421 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 15:55:40.71 ]
- もう一度基礎からC言語 第47回 特殊な画面制御〜コンソール入出力関数とエスケープシーケンス エスケープシーケンスによる画面制御
www.grapecity.com/tools/support/powernews/column/clang/047/page02.htm >エスケープシーケンスは、標準状態のWindowsのコマンドプロンプト(DOS窓)では使用できません(単に“[2J [5;10H"”などの文字列が表示されるだけです)。 >コマンドプロンプトでエスケープシーケンスを有効にするには、起動時に“ansi.sys”というドライバを読み込ませておく必要があります。
- 422 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 19:10:47.24 ]
- は?
- 423 名前:デフォルトの名無しさん [2013/03/08(金) 19:16:08.10 ]
- androidアプリで設けた人おりますか?
せどり、FXでの金儲けに比べるとしんどいすか?
- 424 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 19:54:27.70 ]
- Androidプログラミング質問スレ Part30
toro.2ch.net/test/read.cgi/tech/1362465598/ 【Google】Androidアプリ作成part15 toro.2ch.net/test/read.cgi/tech/1342948559/
- 425 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 19:56:11.44 ]
- Android
anago.2ch.net/android/
- 426 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 20:22:50.76 ]
- JAppletのpaintをオーバーライドしちゃいけないのは何でなの?
- 427 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 21:49:31.90 ]
- JAppletがpaintをオーバライドして使われることを想定した作り方になってないからじゃねーの?
- 428 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 22:29:16.33 ]
- なーるほどね
- 429 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 22:30:31.97 ]
- >>427
finalにする事で、性能面で有利な実装ができるとか あるのかな? java.lang.Stringとかもだよね、確か?
- 430 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 22:38:05.42 ]
- >>429
寝ぼけたプログラマの、とんでもない行為が少なくなることを性能面というなら、ある。 final にしなかったことで、性能面じゃなくて、ダーク面(ダークサイド)に落ちたことはある。
- 431 名前:410 mailto:sage [2013/03/08(金) 22:43:20.34 ]
- >>416
>たぶんexecしたら別端末になるんじゃないの? もしかするとそうかもしれない。firefoxがちゃんと立ち上がってることから察するに、clsコマンドも実行されてる だけどJavaコマンドで実行したcmd端末とは別の端末が裏で起動して実行してるのかなと・・・ これじゃあclsコマンドをJavaコマンドで実行した端末でできないのであまり意味がないですよね・・・困りました
- 432 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 22:44:27.78 ]
- ×Javaコマンドで
○Javaコマンドを
- 433 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 23:25:06.20 ]
- >>430
ユーザーランドというよりは、 VM内の最適化とかキャッシュとかそうゆう方面で有利さはないのかなと思ったしだいで
- 434 名前:デフォルトの名無しさん mailto:sage [2013/03/08(金) 23:33:21.23 ]
- コマンドプロンプトのCUIの画面クリアしたいならansi.sysを有効にしてエスケープシーケンス使えと何度言ったら分かるんだ!
- 435 名前:410 mailto:sage [2013/03/08(金) 23:35:47.87 ]
- >>434
すみません日本語でお願いします そんな大掛かりなことをしないと画面クリアもできませんのか!!!
- 436 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:19:27.13 ]
- 諦メロン
- 437 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:25:16.81 ]
- 質問です
byte[] waveData = new byte[44100*time]; for(int i=0; i<waveData,length; i++) { waveData[i] = (byte) (波の式); } みたいなバイト波形データをAudioSystem.write()でwavファイルに書き込むところまではできたのですが、 これをファイルに書き出さずに再生する方法がよくわからないです
- 438 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:28:36.44 ]
- Java Sound プログラマーズガイド
docs.oracle.com/javase/jp/1.5.0/guide/sound/programmer_guide/contents.html
- 439 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:30:16.58 ]
- サウンド
docs.oracle.com/javase/jp/1.5.0/guide/sound/
- 440 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:34:55.09 ]
- メモリへのプリロードが可能な、リアルタイムでないサウンドデータを使う場合は、Clip を使用します。
一度にメモリに入りきらない長いサウンドファイルや、再生前にデータを知ることのできないサウンドなどのストリーミングデータには、SourceDataLine を使用します。
- 441 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:39:20.38 ]
- javax.sound.sampled.AudioSystem
- 442 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:40:04.32 ]
- >>374
Swingの話をしてるのなら、 KeymapとかKeyStrokeとかAction#setEnabled()とか既にあってだな…
- 443 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 00:47:48.88 ]
- >>437
合成したサウンドを Java で再生する(日本は山だらけ?) yamadarake.jp/trdi/report000002.html
- 444 名前:437 mailto:sage [2013/03/09(土) 00:52:30.68 ]
- Clip使ってるんですがなぜか再生されないんですよね・・・。
www.dotup.org/uploda/www.dotup.org4019432.zip.html 一応test.wavとしてwavファイルに書き出して単純なsin波がなってることは確認できるのですが、 Clipで再生がうまくいかないです。
- 445 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 01:50:41.12 ]
- >>383
マーカーアノテーションは便利だけどな
- 446 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 01:52:51.14 ]
- >>443の通りにちゃんとやってるの?
- 447 名前:437 mailto:sage [2013/03/09(土) 02:37:26.74 ]
- 後半の部分ですよね?
whileじゃなくてclip.drain()でやったりClipをキャストしない方法でも試したりしているんですがうまくいかないです
- 448 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 02:47:09.66 ]
- while?
よくわからんがAudioFormatとかの部分に設定値ミスあんじゃねえの まさか設定値まで>>443の通りにやってないよな
- 449 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 02:48:15.67 ]
- zipとか怖くてひらけねえよ
- 450 名前:437 mailto:sage [2013/03/09(土) 02:53:19.47 ]
- 直でもあげました
www.dotup.org/uploda/www.dotup.org4019839.java.html 今でもまだzipでレジストリ書き換えみたいな手法ってOSが許してくれるのですか?
- 451 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 03:14:16.59 ]
- そもそも>>443のコードで音でないじゃん
- 452 名前:437 mailto:sage [2013/03/09(土) 03:14:59.51 ]
- そうなんですよね
- 453 名前:437 mailto:sage [2013/03/09(土) 03:16:33.77 ]
- 送信してしまった
そうなんですよね、ggって出てくるClip使って再生するソースで再生できたためしが今までにない・・・
- 454 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 03:54:50.88 ]
- >>443のコード
clip.drain(); ↓ System.out.println("drain"); clip.drain(); と書き換えたら音がしたよ
- 455 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 03:56:19.18 ]
- >>450のコードでも
whileの前にSystem.out.println("drain");を加えたけど音がならなかったけど その手前にあるwavファイルへの出力削ったら音がしたから、ファイル出力でバッファが空になるようだね どうも clip.start(); のあとに何か間が必要なのかな?
- 456 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:00:56.14 ]
- System.out.println("drain"); 以外のメソッドで試しててないけど文字は別にdrainじゃなくてもいいと思うけど
再現した? clip.start();のすぐ後にSystem.out.println("なんちゃら");が入ると音が再生された なんなんだろうこれは
- 457 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:17:09.10 ]
- うん、
System.out.println("なんちゃら"); の代わりに Thread.sleep(100); を入れても音がなった どうもclip.start();してから再生開始までに時間がかかるようだよ
- 458 名前:437 mailto:sage [2013/03/09(土) 04:18:57.03 ]
- >>455
>>>450のコードでも >whileの前にSystem.out.println("drain");を加えたけど音がならなかったけど >その手前にあるwavファイルへの出力削ったら音がしたから、ファイル出力でバッファが空になるようだね ファイル出力削ったらっというのがよくわからないのだけれども、try{ AudioSystem.write あたりを削除したってことですか? 自分の環境でそこを削除してwhileの前にSystem.out.println("drain");を書いてみましたがなりませんでした
- 459 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:22:40.99 ]
- 推測だけどclip.start();してからバッファが送られるまでに結構時間がかかって
こちらの環境だと標準出力で文字送る時間くらいの時間で再生開始できるけど そちらの環境だと標準出力くらいの時間では足りないとか? Thread.sleep(100);に置き換えて待ち時間を変えて試してみてはどう?
- 460 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:25:42.08 ]
- >>458
>>454は再現したの? System.out.println("drain"); じゃなくてThread.sleep(100);みたいな待ち時間決められるコードに置き換えて試してみてもダメ?
- 461 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:27:08.86 ]
- コード削ったのはこの部分だね丸々コメントアウトした
try { AudioSystem.write(audioIn, AudioFileFormat.Type.WAVE, new File("test.wav")); } catch(IOException e) { e.printStackTrace(); }
- 462 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:28:43.91 ]
- もしどちらでも再現しないのなら
私には原因わからんので、分かる人がスレに来るのを待つしかないね
- 463 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:34:30.67 ]
- 今まで知らなかった 5 つの事項: 日常的な Java ツール
www.ibm.com/developerworks/jp/java/library/j-5things12/index.html 一応バグとして取り上げられてる記事もあるけど >音が出ない場合 >JDK 5 リリースでは、たちの悪い小さなバグが報告されています。短い音声クリップの場合、一部のプラットフォームでは、コードは適切に実行されているように見えながら、音が出ない場合があります。 対策もすぐ後に書かれてます >このバグには「won't fix (修正方法なし)」というマーキングがされていますが、対策は非常に単純です。STOP イベントをリッスンする LineListener を登録し、STOP イベントが発生したら、 全部は転載しないので該当部をご覧になってください
- 464 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:36:23.86 ]
- 4434125 : LineEvent.Type.STOP is returned too early for short sound clips
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4434125
- 465 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:38:07.23 ]
- 音が鳴らなかったのはただのバグで対処法もちゃんとあってよかった
System.out.println()とか分けわからん方法でも音が鳴ったのはよく分からんが
- 466 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:51:43.04 ]
- >>460
>>454は最初ならなくて、Thread.sleep(1000);をいれると無事なりました ですが自分のほうのコードはなぜかならず・・・ >>463で貼ってくださったコードのようにLineListener加えてもならない・・・ >短い音声クリップの場合、一部のプラットフォームでは、コードは適切に実行されているように見えながら、音が出ない場合が... ということでかなり再生時間が長いクリップにしてもみましたがダメだ〜
- 467 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 04:57:10.11 ]
- >>463の対処法でも音なったよ
- 468 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:02:05.36 ]
- こちらで>>450を>>463のコードで修正して音なった修正ソースを一応うpときますね
www.dotup.org/uploda/www.dotup.org4019998.java.html
- 469 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:02:20.56 ]
- はぁ〜サウンドAPIには泣かされっぱなしです
Mixer.Info[] info = AudioSystem.getMixerInfo(); for(int i=0; i<info.length; i++) { System.out.println(info[i]); } 自分の環境ではこれの出力が文字化けしてミキサーも情報もろくに得られない>< ちょっといったん寝ます。
- 470 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:04:10.37 ]
- 文字化けはこちらでも起きましたよ
文字コードが直す方法知らないので気にしてませんでしたが
- 471 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:13:17.02 ]
- スリープ時間からしてかなりの低スペックマシンなんじゃ
- 472 名前:437 mailto:sage [2013/03/09(土) 05:14:07.88 ]
- >>468
なった〜!!ありがとうございます さっきならなかったのはwav書き出しを消さないままリスナー追加してたからっぽいです あれ、だけど /*try { AudioSystem.write(audioIn, AudioFileFormat.Type.WAVE, new File("test.wav")); } catch(IOException e) { e.printStackTrace(); }*/ のコメントアウトを外すと鳴らなくなる・・・
- 473 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:22:18.26 ]
- >>455でも書いたけど
wavファイルに書き出すと登録したデータが空になるとかだと思う 所謂キュー(queue)みたいに音データ取り出すとデータが減ってくみたいな たぶん、確信はないけど
- 474 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 05:31:39.71 ]
- 書き出しと再生を行えるようなソフト(GUIで波形合成してテストプレイ→気に入ったらwav書き出し)を作る予定なのですが厳しいですかね?
今再生した後に書き出してみましたが、ファイルが壊れていて再生できませんでした。 tempファイルとして書き出してそれを読み込んで再生とかにしたほうがよさそうですね
|

|