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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Android

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

Q&A

解決済

1回答

1799閲覧

Android, Camera 実行エラー

takasama

総合スコア12

Java

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

Android

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

0グッド

0クリップ

投稿2016/06/22 15:51

###前提・実現したいこと
http://google-os.blog.jp/archives/50816150.html
で公開されている脈拍センシングアプリを起動させたいと思っているのですがうまくいきません。
コンパイルは通るのですが実機でデバッグすると、「問題が発生したため終了します」と起動しません。
コンストラクタはあるはずなんですが下記のようなエラーメッセージが表示されます。

Androidのカメラを使用したアプリに触れてみようと勉強中で基本的なところが抜けているかも…
なんとかこのアプリケーションを起動させるところまで完成させたいのですが現状手詰まりです。

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

06-23 00:06:13.256 7276-7276/com.example.taka.wtf D/dalvikvm﹕ Late-enabling CheckJNI 06-23 00:06:13.357 7276-7276/com.example.taka.wtf E/ResourceType﹕ 0x5ace7008: Failed to ResTable::remove() cookie = 0x3, not last table. mHeaders.size() = 4. Warning for spontaneous crashes when the garbage collector runs. 06-23 00:06:13.357 7276-7276/com.example.taka.wtf E/asset﹕ Error removing runtime skin resource (cookie 0x3) 06-23 00:06:13.357 7276-7276/com.example.taka.wtf I/asset﹕ Problem removing all runtime skin resources 06-23 00:06:13.377 7276-7276/com.example.taka.wtf D/dalvikvm﹕ newInstance failed: no <init>() 06-23 00:06:13.377 7276-7276/com.example.taka.wtf D/AndroidRuntime﹕ Shutting down VM 06-23 00:06:13.377 7276-7276/com.example.taka.wtf W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41f478b0) 06-23 00:06:13.377 7276-7276/com.example.taka.wtf E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.taka.wtf/com.example.taka.wtf.MainActivity}: java.lang.InstantiationException: can't instantiate class com.example.taka.wtf.MainActivity; no empty constructor at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2187) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2311) at android.app.ActivityThread.access$600(ActivityThread.java:149) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5214) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.InstantiationException: can't instantiate class com.example.taka.wtf.MainActivity; no empty constructor at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1130) at android.app.Instrumentation.newActivity(Instrumentation.java:1061) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2311)             at android.app.ActivityThread.access$600(ActivityThread.java:149)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)             at android.os.Handler.dispatchMessage(Handler.java:99)             at android.os.Looper.loop(Looper.java:137)             at android.app.ActivityThread.main(ActivityThread.java:5214)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:525)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)             at dalvik.system.NativeStart.main(Native Method)

###ソースコード

package com.example.taka.wtf; import java.io.IOException; import android.content.Context; import android.hardware.Camera; import android.os.Build; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.PorterDuff.Mode; import android.graphics.SurfaceTexture; public class MainActivity extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback { private static final int PREVIEW_WIDTH = 640; private static final int PREVIEW_HEIGHT = 480; private static final int FRAME_WIDTH = 50; private static final int SCALE = 20; private static final int VIEW_POINTS = 200; private static final float PEN_WIDTH = 3.0F; private int mBufSize; private float[] mVal; private int mSamples; private int mTop; private int mStep; private Camera mCamera = null; private SurfaceHolder mHolder = null; private SurfaceTexture mSurfaceTexture = null; private Paint mLinePaint = new Paint(); public MainActivity(Context context) { super(context); mLinePaint.setStyle(Style.STROKE); mLinePaint.setColor(Color.GREEN); mLinePaint.setStrokeWidth(PEN_WIDTH); mHolder = getHolder(); mHolder.addCallback(this); } public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub mBufSize = getWidth(); mVal = new float [mBufSize]; mStep = (mBufSize - FRAME_WIDTH*2) / VIEW_POINTS; // カメラオープン mCamera = Camera.open(); try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mSurfaceTexture = new SurfaceTexture(0); mCamera.setPreviewTexture(mSurfaceTexture); } else { mCamera.setPreviewDisplay(null); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // TODO Auto-generated method stub stopPreview(); // プレビュー画面のサイズ設定 Camera.Parameters params = mCamera.getParameters(); params.setPreviewSize(PREVIEW_WIDTH, PREVIEW_HEIGHT); params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); mCamera.setParameters(params); // プレビュー開始 mTop = 0; mSamples = 0; startPreview(); } public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stopPreview(); mCamera.release(); mCamera = null; } @Override public void onPreviewFrame(byte[] data, Camera camera) { // TODO Auto-generated method stub mVal[mSamples%mBufSize] = calcLuminance(data); mSamples++; drawLuminance(); } // プレビュー開始 private void startPreview(){ mCamera.setPreviewCallback(this); mCamera.startPreview(); } // プレビュー停止 private void stopPreview(){ mCamera.setPreviewCallback(null); mCamera.stopPreview(); } // 輝度値の計算 private float calcLuminance(byte[] data) { float sumVal = 0.0f; int cnt = 0; for (int y=PREVIEW_HEIGHT/4; y<PREVIEW_HEIGHT*3/4; y++) { for (int x=PREVIEW_WIDTH/4; x<PREVIEW_WIDTH*3/4; x++) { sumVal += (float)(data[y*PREVIEW_WIDTH+x] & 0xff); cnt++; } } sumVal /= cnt; return sumVal; } private void drawLuminance() { int idx, idx_1; Canvas canvas = mHolder.lockCanvas(); if (canvas != null) { canvas.drawColor(0, Mode.CLEAR); if (mSamples >= VIEW_POINTS) { mTop++; } for (int i=mTop, x=0; i<mSamples-1; i++, x++) { idx = i % mBufSize; idx_1 = (i+1) % mBufSize; canvas.drawLine(x*mStep+FRAME_WIDTH, (mVal[idx]-80)*SCALE, (x+1)*mStep+FRAME_WIDTH, (mVal[idx_1]-80)*SCALE, mLinePaint); } mHolder.unlockCanvasAndPost(canvas); } }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

起動時に呼び出されるコンストラクタは引数なしのコンストラクタです。通常Activityを使用するのにコンストラクタを作成することはありません。今回は引数ありのコンストラクタを作成したために、引数なしのコンストラクタが存在しない状態になっています。そのため、起動時にこのActivityのコンストラクタを起動することができず、例外発生となっています。

投稿2016/06/22 15:57

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasama

2016/06/23 00:36

回答について調べると「スーパークラスであるViewには、Contextを引数に持つコンストラクタしか用意されておらず、引数なしのデフォルトコンストラクタはありません。」 と載っていて、どういうことだこれじゃあ引数なしのコンストラクタが作れないじゃないかと6時間ほど試行錯誤しましたがActivityがないことに気づいて public class SubActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CameraView view = new CameraView(this); setContentView(view); } を追加したら無事アプリが起動しました! 大きなヒントを提示して頂きありがとうございました!
swordone

2016/06/23 03:25

失礼、最初は「Activityのコンストラクタ」の話でした。説明不足て混乱させ申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問