質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.85%

  • Java

    12820questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6097questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3368questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

AndroidでJava Sound APIを利用する方法について

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 238

yuubomber

score 2

前提・実現したいこと

Android Studioで楽曲のボーカルカットをするアプリを作っています。
ボーカルカット部分のプログラムはあらかじめeclipseで作成しWindows上で正常に動作していたのですが、Android Studioの方に貼り付けた際に
「エラー: パッケージjavax.sound.sampledは存在しません」
と表示され、利用することができません。
なんとかAndroidでJava Sound APIを利用する方法はないのでしょうか?

発生している問題・エラーメッセージ

エラー :(14, 27) エラー: パッケージjavax.sound.sampledは存在しません
エラー :(24, 13) エラー: シンボルを見つけられません
シンボル:   クラス AudioInputStream
場所: クラス WavVocalCut
エラー :(24, 36) エラー: シンボルを見つけられません
シンボル:   変数 AudioSystem
場所: クラス WavVocalCut
エラー :(33, 13) エラー: シンボルを見つけられません
シンボル:   クラス AudioFormat
場所: クラス WavVocalCut
エラー :Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

該当のソースコード

package jp.kaken.musicplayer;

import android.content.Context;
import android.net.Uri;
import android.os.Environment;
import android.widget.Toast;

import java.io.ByteArrayInputStream;
import java.io.File;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;

public class WavVocalCut {
    public static void wavVocalCut(Context context, Uri inputUri, String fileName){
        Toast.makeText(context,"start",Toast.LENGTH_SHORT);
        try {
            File inputFile = new File(inputUri.toString());
            AudioInputStream ais = AudioSystem.getAudioInputStream(inputFile);
            // オーディオ入力ストリームからデータを読む
            byte[] data1 = new byte[ais.available()];
            short[] data2 = new short[ais.available() / 2];
            short[] vcdata = new short[ais.available()/4];
            byte[] data3 = new byte[ais.available()/2];
            ais.read(data1);
            ais.close();
            // ファイルのフォーマットを調べる
            AudioFormat af = ais.getFormat();
            boolean isPcmSigned=(af.getEncoding()==AudioFormat.Encoding.PCM_SIGNED);
            if(af.getChannels()==2 &&
                    af.getSampleSizeInBits()==16 &&
                    !isPcmSigned
                    ){
                for(int i=0,j=0;i<data1.length;i+=2,j++){
                    data3[j]=(byte)((data1[i]-data1[i+1])/2+128);
                }
            }else if (af.getChannels() == 2 &&
                    af.getSampleSizeInBits() == 16 &&
                    isPcmSigned &&
                    (!af.isBigEndian())) { // ステレオ,16ビット,符号付PCM,リトルエンディアン
                //ステレオ16ビットのためbyte->short変換を一旦行う
                for (int i = 0, j = 0, k = 0; i < data1.length; i += 4, j += 2, k++) {
                    data2[j]=(short)((data1[i] & 0xff) | ((data1[i+1] << 8) & 0xff00));
                    data2[j+1]=(short)((data1[i+2] & 0xff) | ((data1[i+3] << 8) & 0xff00));
                    vcdata[k]=(short) ((data2[j]-data2[j+1])/2);
                }
                //short->byte変換
                for(int i=0,j=0;i<data2.length;i+=2,j++){
                    data3[i]=(byte) ((vcdata[j]));
                    data3[i+1]=(byte) (vcdata[j]>>8);
                }

            }

            AudioFormat aof = new AudioFormat(af.getSampleRate(), af.getSampleSizeInBits(), 1, true,
                    false);
            AudioInputStream aos = new AudioInputStream(
                    new ByteArrayInputStream(data3)
                    , aof
                    , data3.length / 2);
            String folder = Environment.getExternalStorageDirectory().toString() + "/VCdata";
            File outputFile = new File(folder + "/" + fileName + " vc");
            AudioSystem.write(aos, AudioFileFormat.Type.WAVE, outputFile);
            aos.close();
            Toast.makeText(context,"成功",Toast.LENGTH_SHORT);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(context,"失敗",Toast.LENGTH_SHORT);
        }
    }
 }

試したこと

libsに
「tritonus-share-0.3.7-1.jar」(http://www.java2s.com/Code/Jar/t/Downloadtritonusshare0371jar.htm)
を入れる

結果

エラー :This is often due to inadvertently including a core library file
エラー :However, you might actually be trying to define a class in a core
エラー :If you really intend to build a core library -- which is only
エラー :trouble processing "javax/sound/midi/ControllerEventListener.class":
エラー :appropriate as part of creating a full virtual machine
エラー :It is also often of questionable legality.
エラー :core class, then this is the most likely explanation of what's
エラー :namespace, the source of which you may have taken, for example,
エラー :assuredly not work. At a minimum, it jeopardizes the
エラー :Eclipse). If you are sure you're not intentionally defining a
エラー :compatibility of your app with future versions of the platform.
エラー :going on.
エラー :when not building a core library.
エラー :in your application's project, when using an IDE (such as
エラー :from a non-Android virtual machine project. This will most
エラー :Ill-advised or mistaken usage of a core class (java.* or javax.*)
エラー :the "--core-library" option to suppress this error message.
エラー :distribution, as opposed to compiling an application -- then use
エラー :If you go ahead and use "--core-library" but are in fact
エラー :building an application, then be forewarned that your application
エラー :will still fail to build or run, at some point. Please be
エラー :prepared for angry customers who find, for example, that your
エラー :application ceases to function once they upgrade their operating
エラー :system. You will be to blame for this problem.
エラー :If you are legitimately using some code that happens to be in a
エラー :core package, then the easiest safe alternative you have is to
エラー :your own package namespace. This means that they will never be in
エラー :repackage that code. That is, move the classes in question into
エラー :conflict with core system classes. JarJar is a tool that may help
エラー :you in this endeavor. If you find that you cannot do this, then
エラー :that is an indication that the path you are on will ultimately
エラー :lead to pain, suffering, grief, and lamentation.
エラー :1 error; aborting
エラー :Execution failed for task ':app:transformClassesWithDexForDebug'.

com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process

と出る

補足情報(言語/FW/ツール等のバージョンなど)

Android Studio 2.3.3
Java

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.85%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    12820questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6097questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3368questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。