0

YouTubeプレイリストのビデオをeBayに埋め込もうとしています..これまでのところ何も機能していません.. iframeまたは

 <iframe width="420" height="315" src="//www.youtube.com/embed/j-IV87qQ00M"      frameborder="0" allowfullscreen></iframe>

設定された間隔で AsyncTask を実行する

私はAndroidが初めてなので、この質問は簡単かもしれませんが、とにかくここにあります:

AsyncTask を使用してユーザーの場所をリモート データベースに送信する Android アプリを作成しています。現在はボタンをクリックすると発生しますが、設定した間隔で自動的に発生するようにしたいと考えています。

ハンドラーと「scheduleAtFixedRate」を作成しようとしましたが、うまくいきません。おそらく私のやり方が間違っているからでしょう。これは私のコードです:

package com.paul.locations;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class OptionsPage extends Activity implements OnClickListener {

private String lat="", lon="", current = "";
private Button  bUpdate, bGoogleMap, Confirm;
private EditText TimerInterval;
private TextView  Latit, Longit;
final Handler handler = new Handler();
private static final String TAG_SUCCESS = "success";
private static final String TAG_MESSAGE = "message";
private static final String UPDATE_INFO_URL = "http://192.168.1.16/locations/update_info.php";
 // Progress Dialog
private ProgressDialog pDialog;

// JSON parser class`enter code here`
JSONParser jsonParser = new JSONParser();

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);

    TimerInterval = (EditText) findViewById(R.id.etTimer);
    Longit = (TextView) findViewById(R.id.tvLon);
    Latit = (TextView) findViewById(R.id.tvLat);
    bUpdate = (Button)findViewById(R.id.bUpdate);
    bUpdate.setOnClickListener(this);
    bGoogleMap = (Button)findViewById(R.id.bGoogleMap);
    bGoogleMap.setOnClickListener(this);
    Confirm = (Button)findViewById(R.id.bConfirm);
    Confirm.setOnClickListener(this);


            //This is the new line for timer task
TimerTask task = new TimerTask(){
        @Override
        public void run(){
            new AttemptUpdate().execute();
        }

    };

    new Timer().scheduleAtFixedRate(task,0,5000);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bGoogleMap:
        Intent i = new Intent(OptionsPage.this, Location.class);
        finish();
        startActivity(i);
        break;
    case R.id.bUpdate:
        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        android.location.Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        lon = Double.toString(location.getLongitude());
        lat = Double.toString(location.getLatitude());
        System.out.println(lon + ", " + lat);
        Calendar c = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
        current = df.format(c.getTime());
        System.out.println(current);
        new AttemptUpdate().execute();
        break;
    case R.id.bConfirm:
        String Interval = TimerInterval.getText().toString();
        int I = Integer.parseInt(Interval);
        System.out.println(I);
        break;
    }
}

class AttemptUpdate extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(OptionsPage.this);
        pDialog.setMessage("Attempting to store your location...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected String doInBackground(final String... args) {
        // TODO Auto-generated method stub
        String success;
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(OptionsPage.this);
        String post_username = sp.getString("username", "anon");

        try {
            // Building Parameters
            List<NameValuePair> params1 = new ArrayList<NameValuePair>();
            params1.add(new BasicNameValuePair("username", post_username));
            params1.add(new BasicNameValuePair("lat", lat));
            params1.add(new BasicNameValuePair("lon", lon));
            params1.add(new BasicNameValuePair("time", current));

            Log.d("request!", "starting");

            //Posting user data to script 
            JSONObject json = jsonParser.makeHttpRequest(
                    UPDATE_INFO_URL, "POST", params1);

            // full json response
            Log.d("Store location attempt", json.toString());

            // json success element
            success = json.getString(TAG_SUCCESS);
            if(success.equals("SUCCESS")) {
                Log.d("Location Stored!", json.toString());    
                finish();
                return json.getString(TAG_MESSAGE);
            }else{
                Log.d("Storing Location Failure!", json.getString(TAG_MESSAGE));
                return json.getString(TAG_MESSAGE);
            } 
        } catch (JSONException e) {
            e.printStackTrace();
        }           
        return null;
    }

    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();
        if (file_url != null){
            Toast.makeText(OptionsPage.this, file_url, Toast.LENGTH_LONG).show();
        }
        Latit.setText("Latitude currently is: " + lat);
        Longit.setText("Longitude currently is: " + lon);
    }
}
}

OnCreate メソッドでは、5 秒ごとに AttemptUpdate を実行するタイマーを作成しようとした場所を確認できますが、入力するとエラーとして表示されます。

タイマー タスクとタイマーを追加した後、コードを実行しました。アプリがクラッシュし、次の logcat エラーが発生しました。

08-02 13:50:02.844: W/dalvikvm(29346): threadid=13: thread exiting with uncaught exception (group=0x41b11438)
08-02 13:50:02.854: E/AndroidRuntime(29346): FATAL EXCEPTION: Timer-0
08-02 13:50:02.854: E/AndroidRuntime(29346): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.os.Handler.<init>(Handler.java:121)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.app.Dialog.<init>(Dialog.java:107)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.app.AlertDialog.<init>(AlertDialog.java:114)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.app.AlertDialog.<init>(AlertDialog.java:98)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.app.ProgressDialog.<init>(ProgressDialog.java:77)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at com.paul.locations.OptionsPage$AttemptUpdate.onPreExecute(OptionsPage.java:108)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at android.os.AsyncTask.execute(AsyncTask.java:534)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at com.paul.locations.OptionsPage$1.run(OptionsPage.java:69)
08-02 13:50:02.854: E/AndroidRuntime(29346):    at java.util.Timer$TimerImpl.run(Timer.java:284)
4

1 に答える 1

0

eBay オークションに YouTube を埋め込む方法の 1 つは、「古い YouTube 埋め込みコードを使用する」チェックボックスをオンにして YouTube ビデオを共有することです。その後、その埋め込みコードをコピーできます。もちろん html5 ではありませんが、ebay が iframe タグを許可するまでは、少なくとも iOS 以外のすべてのデバイスで機能します。

于 2014-06-24T13:48:08.680 に答える