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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1276閲覧

AndroidStudio 実行時に変な帯?(java)

atokoo

総合スコア13

Java

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

Android Studio

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

0グッド

0クリップ

投稿2016/08/02 04:13

イメージ説明

質問です、この画像にあるようにAndroidStudioのエミュレータで下記ソースを起動した所 右側に白い帯のようなものが表示されてしまいます。どこが原因で出るのでしょうか?

MainActivity.java

1package camera.ca; 2 3import android.app.Activity; 4import android.hardware.Camera; 5import android.hardware.Camera.Parameters; 6import android.hardware.Camera.Size; 7import android.os.Bundle; 8import android.os.Environment; 9import android.view.SurfaceHolder; 10import android.view.SurfaceView; 11import android.view.View; 12import android.view.Window; 13import android.view.WindowManager; 14import android.widget.Button; 15import android.widget.FrameLayout; 16import android.widget.FrameLayout.LayoutParams; 17import android.widget.Toast; 18 19import java.io.File; 20import java.io.FileOutputStream; 21import java.util.List; 22 23public class MainActivity extends Activity { 24 25 SurfaceView sv; 26 SurfaceHolder sh; 27 Camera cam; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 33 requestWindowFeature(Window.FEATURE_NO_TITLE); 34 35 FrameLayout fl = new FrameLayout(this); 36 setContentView(fl); 37 38 sv = new SurfaceView(this); 39 sh = sv.getHolder(); 40 sh.addCallback(new SurfaceHolderCallback()); 41 42 Button btn = new Button(this); 43 btn.setText("撮影"); 44 btn.setLayoutParams(new LayoutParams(200, 150)); 45 btn.setOnClickListener(new TakePictureClickListener()); 46 47 fl.addView(sv); 48 fl.addView(btn); 49 } 50 51 class SurfaceHolderCallback implements SurfaceHolder.Callback { 52 @Override 53 public void surfaceCreated(SurfaceHolder holder) { 54 cam = Camera.open(); 55 Parameters param = cam.getParameters(); 56 List<Size> ss = param.getSupportedPictureSizes(); 57 Size pictSize = ss.get(0); 58 59 param.setPictureSize(pictSize.width, pictSize.height); 60 cam.setParameters(param); 61 } 62 @Override 63 public void surfaceChanged(SurfaceHolder holder, int f, int w, int h) { 64 try { 65 cam.setDisplayOrientation(0); 66 cam.setPreviewDisplay(sv.getHolder()); 67 68 Parameters param = cam.getParameters(); 69 List<Size> previewSizes = 70 cam.getParameters().getSupportedPreviewSizes(); 71 Size pre = previewSizes.get(0); 72 param.setPreviewSize(pre.width, pre.height); 73 74 LayoutParams lp = new LayoutParams(pre.width, pre.height); 75 sv.setLayoutParams(lp); 76 77 cam.setParameters(param); 78 cam.startPreview(); 79 } catch (Exception e) { } 80 } 81 @Override 82 public void surfaceDestroyed(SurfaceHolder holder) { 83 cam.stopPreview(); 84 cam.release(); 85 } 86 } 87 88 class TakePictureClickListener implements View.OnClickListener { 89 @Override 90 public void onClick(View v) { 91 cam.takePicture(null, null, new TakePictureCallback()); 92 } 93 } 94 95 class TakePictureCallback implements Camera.PictureCallback { 96 @Override 97 public void onPictureTaken(byte[] data, Camera camera) { 98 try { 99 File dir = new File( 100 Environment.getExternalStorageDirectory(), "Camera"); 101 if(!dir.exists()) { 102 dir.mkdir(); 103 } 104 File f = new File(dir, "img.jpg"); 105 FileOutputStream fos = new FileOutputStream(f); 106 fos.write(data); 107 Toast.makeText(getApplicationContext(), 108 "写真を保存しました", Toast.LENGTH_LONG).show(); 109 fos.close(); 110 cam.startPreview(); 111 } catch (Exception e) { } 112 } 113 } 114}

マニフェストも載せておきます。

AndroidManifest.xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="camera.ca"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:supportsRtl="true" 10 android:screenOrientation="landscape" 11 android:theme="@style/AppTheme"> 12 <activity android:name=".MainActivity"> 13 14 <intent-filter> 15 <action android:name="android.intent.action.MAIN" /> 16 17 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 21 </activity> 22 </application> 23 24 <uses-permission android:name="android.permission.CAMERA" /> 25 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 26 27 28 29 30</manifest>

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

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

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

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

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

guest

回答1

0

ベストアンサー

単純にFrameLayout、またはSurfaceViewの長さが短いため、背景の白色が表示されているだけではないでしょうか。

投稿2016/08/02 05:51

編集2016/08/02 05:58
yona

総合スコア18155

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

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

atokoo

2016/08/02 07:04

ありがとうございます。FrameLayoutの長さはどこで調節できるのでしょうか?
yona

2016/08/02 07:07

自分なりに調べましたか? Activity#onCreateでFrameLayoutを作っているところでLayoutParamsを適切に設定すればいいですよ。
atokoo

2016/08/02 07:12

調べましたが具体的な事が余り分からずでした、すいません。LayoutParamsの場所までは分かるのですがそこを調べてみます。
yona

2016/08/02 07:15

それは失礼しました。ごめんなさい。 ただ、作りたい画面でやり方が若干異なるので注意が必要です。 FrameLayoutを伸ばすのか、SurfaceViewを伸ばすのかで大きくUIが変わるので注意してください。
atokoo

2016/08/02 07:19

そうなると、両方試してみたほうがよさそうですね ありがとうございます。 具体的な質問があります、このFrameLayoutでFLAG_FULLSCREENの記述がしっかりされているのでこの場合はFLAG_FULLSCREENがしっかり動作していないと見たほうがいいのでしょうか?それともSurfaceViewが原因なのでしょうか?
yona

2016/08/02 07:55

ActivityがもつウィンドウとルートViewは違うと思いますよ。 ウィンドウを広げたからといって、配置されるルートViewが広がるとは考えられません。 ルートViewにmatch_parentが設定されていたら別ですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問